Pyhthon之正規表示式

2021-09-21 05:32:37 字數 2608 閱讀 6606

match 、 search、findall的區別

match從字串的開頭開始匹配,如果開頭沒有匹配到,search是從字串任意位置開始匹配。

上面兩個都是匹配到乙個就停止匹配。findall是返回所有能匹配上的字串列表

re.match

re

str=result1 = re.match(,str)

result1.group()

1

2

3

python re_test.py

<_sre.sre_match object at 0x10584fa58>

123

開頭匹配不到則返回none

re

str=result1 = re.match(,str)

result1

1

2

python re_test.py

none

re.search

匹配到一次就停止

re

str=result2 = re.search(, str)

result2

result2.group()

1

2

3

python re_test.py

<_sre.sre_match object at 0x108475a58>

123

re.findall

findall返回的是列表

re

str=result3 = re.findall(,str)

result3

1

2

python re_test.py

['123','123123']

匹配不到則返回空列表

re

str=result3 = re.findall(,str)

result3

1

2

python re_test.py

re.compile

可以把正規表示式編譯成乙個正規表示式物件。可以把那些經常使用的正規表示式編譯成正規表示式物件,這樣可以提高一定的效率。下面是乙個正規表示式物件的乙個例子:

text = regx = re.compile()  regx.findall(text)
python re_test.py

['jgood', 'cool']

group和groups的區別

先看乙個示例

re

result = re.search(,)

result.group()

result.groups()

python re_test.py

123asdf234

('123', '234')

從上面的示例可以看出group會返回到正規表示式中所有的符合規則的內容,而groups只會返回分組(即括號括起來的為一組)中的內容。

正規表示式常用格式:

字元:\d:表示數字

\w:字母、數字、下劃線、中橫線

\t:製表符

.:除了回車以外的所有字元

次數:*:匹配前面的字元0次或者多次 相當於》=0

+:匹配前面的字元1次或者多次 相當於》=1

?:匹配前面的字元0次或者1次  

:匹配前面的字元m次

:匹配前面的字元至少m次,至多n次

正規表示式匹配ip位址

最簡單的方法:

ip= = re.findall(,ip)
1

2

python re_test.py

['192.168.1.200']

改進後的方法:

ip=result=re.findall('(?:\d\.)\d',ip)

result

思路:第一種方法中,"[0-9]\."出現了三次,所以我們把這一串字元當做乙個整體匹配3次即可

(?:pattern)  :表示非獲取匹配,

匹配pattern但不獲取匹配結果,不進行儲存供以後使用。這在使用或字元「(|)」來組合乙個模式的各個部分是很有用。例如「industr(?:y|ies)」就是乙個比「industry|industries」更簡略的表示式

pyhthon 正規表示式

1 正規表示式中r 匹配規則 print m.group 預設匹配字元 he m re.match r zheng zhengdongxu print m.group 預設匹配字元 zheng m re.match r zheng zhengdongxuzhengwuzhengsa print m....

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...