日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythonimportre_Python Re注意问题(持续更新)

發布時間:2024/9/19 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonimportre_Python Re注意问题(持续更新) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PS本文不是講解基礎的

1.比較match和search的區別

search(pattern,string,flags=0)

match(pattern,string,flags=0)

match()在字符串的的開始位置匹配, search會掃描整個字符串查找匹配, 也就是說match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none

看下面兩個例子

#match

import re

m = re.match(r"python", 'pythontscrapy')

print(m.group(0))

#輸出結果為 python

import re

m = re.match(r"python", 'iovepythonscrapy')

print(m.group(0))

#輸出結果為 AttributeError: 'NoneType' object has no attribute 'gr

意思是沒匹配到

#search

import re

m = re.search(r"python", 'pythontscrapy')

print(m.group(0))

#輸出結果為 python

import re

m = re.search(r"python", 'iovepythonscrapy')

print(m.group(0))

#輸出結果為 python

2.findall 返回一個列表 使用和小技巧(以后更新 )

import re

str1 ='welcomeshandong500a700'

info = re.findall(r'\d+',str1)

print(info)

#輸出結果 ['500', '700']

3. sub

將字符串中匹配正則表達式的部分替換為其他值

sub(pattern,repl,string,count,flags)

import re

str1 ='welcomeshandong500'

#把500替換為1000

info = re.sub(r'\d+','1000',str1)

print(info)

import re

str1 ='welcomeshandong500'

#把500替換為1000

def addl(match):

val = match.group()

num = int(val)+1

return str(num)

info = re.sub(r'\d+',addl ,str1)

print(info)

sub(pattern,repl,string,count,flags)

repl 可以為變量,也可以為函數。

4.split

根據匹配分割字符串,返回分割字符串組成的列表。

split(pattern,string,maxsplit=0,flags=0)

import re

str1 ='xueke:yuwen shuxue tiyu'

pt = re.split(r':| ',str1)

print(pt)

#輸出結果 ['xueke', 'yuwen', 'shuxue', 'tiyu']

5.finditer

返回string中所有與pattern相匹配的全部字串,返回形式為迭代器。

re.finditer(pattern, string[, flags])

import re

str1 ='welcomeshandong500sadas1000'

pt = re.finditer('\d+',str1)

for x in pt:

print('-------正在輸出')

print(x.group(0))

#輸出結果

-------正在輸出

500

-------正在輸出

1000

group()、groups()與group(index)的區別,如下所示:

>>> import re

>>> s = '23432werwre2342werwrew'

>>> p = r'(\d*)([a-zA-Z]*)'

>>> m = re.match(p,s)

>>> m.group()

'23432werwre'

>>> m.group(0)

'23432werwre'

>>> m.group(1)

'23432'

>>> m.group(2)

'werwre'

>>> m.groups()

('23432', 'werwre')

>>> m = re.findall(p,s)

>>> m

[('23432', 'werwre'), ('2342', 'werwrew'), ('', '')]

>>> p=r'(\d+)'

>>> m=re.match(p,s)

>>> m.group()

'23432'

>>> m.group(0)

'23432'

>>> m.group(1)

'23432'

>>> m.groups()

('23432',)

>>> m=re.findall(p,s)

>>> m

['23432', '2342']

綜上:

group():母串中與模式pattern匹配的子串;

group(0):結果與group()一樣;

groups():所有group組成的一個元組,group(1)是與patttern中第一個group匹配成功的子串,group(2)是第二個,依次類推,如果index超了邊界,拋出IndexError;

findall():返回的就是所有groups的數組,就是group組成的元組的數組,母串中的這一撮組成一個元組,那一措組成一個元組,這些元組共同構成一個list,就是findall()的返回結果。另,如果groups是只有一個元素的元組,findall的返回結果是子串的list,而不是元組的list了。

例子

s ="1113446777"

>>> import re

>>> s='1113446777'

>>> m = re.findall(r'(\d)\1*',s)

>>> print m

['1', '3', '4', '6', '7']

>>> m = re.search(r'(\d)\*',s)

>>> m.group()

>>> m=re.search(r'(\d)\1*',s)

>>> m.group()

'111'

>>> m.groups()

('1',)

>>> m.group(0)

'111'

>>> m.group(1)

'1'

>>> m.group(2)

Traceback (most recent call last):

File "", line 1, in

IndexError: no such group

>>> m=re.finditer(r'(\d)\1*',s)

>>> m.next().group()

'111'

>>> m.next().group()

'3'

>>> m.next().group()

'44'

>>> m.next().group()

'6'

>>> m.next().group()

'777'

>>> m.next().group()

Traceback (most recent call last):

File "", line 1, in

StopIteration

另一個例子

>>> p = r'(\d)\1+([a-zA-Z]+)'

>>> s = '1111werwrw3333rertert4444'

>>> p = r'(\d)\1+([a-zA-Z]*)'

>>> import re

>>> re.findall(p,s)

[('1', 'werwrw'), ('3', 'rertert'), ('4', '')]

>>> m = re.search(p,s)

>>> m.group()

'1111werwrw'

>>> m.group(1)

'1'

>>> m.group(2)

'werwrw'

>>> m.groups()

('1', 'werwrw')

>>> m = re.finditer(p,s)

>>> m.next().group()

'1111werwrw'

>>> m.next().group()

'3333rertert'

>>> m.next().group()

'4444'

>>> m.next().group()

Traceback (most recent call last):

File "", line 1, in

StopIteration

總結

以上是生活随笔為你收集整理的pythonimportre_Python Re注意问题(持续更新)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。