正規表示式 Python

2021-08-20 03:21:53 字數 2929 閱讀 6733

re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none

re.match(pattern,string,flags=0)

pattern-----匹配的正規表示式

string-----匹配的字串

flags-----匹配的模式

eg.import re

content = 'hello 1234567 world_this is a regex demo'

print(len(content))

result = re.match('^hello\s\d\d\s\w.*demo$',content)

# result = re.match('^hello.*demo$',content)

#result = re.match('^hello\s(\d+)\sworld.*demo$',content)

print (result)

print(result.group())

print(result.span())

40<_sre.sre_match object;span=(0,4),match='hello 1234567 world_this is a regex demo'>

hello 1234567 world_this is a regex demo

(0,40)

eg.貪婪匹配

import re

content = 'hello 1234567 world_this is a regex demo'

result = re.match('^he.*(\d+).*demo$',content)

print(result)

print(result.group(1))

<_sre.sre_match object;span=(0,40),match='hello 1234567 world_this is a regex demo'>

.*匹配到了123456,\d匹配到7,.*盡可能多的匹配

result = re.match('^he.*?(\d+).*demo$',content)

增加乙個問號,盡可能少的匹配

print(result.group(1))

1234567

eg.匹配模式

import re

content='hello 1234567 world_this

is a regex demo

'result = re.match('^hello,*?(\d+).*?demo$',content)

print(result) #none

點無法匹配換行符

import re

content='hello 1234567 world_this

is a regex demo

'result = re.match('^hello,*?(\d+).*?demo$',content,re.s)

print(result.group(1))

re.s  點可以代替換行符

eg.轉義

import re

content ='price is $5.00'

result = re.match('price is $5.00',content)

print(result) #none

沒有匹配到任意字元,必須轉義

import re

content ='price is $5.00'

result = re.match('price is \$5\.00',content)

print(result)

總結:

盡量使用泛匹配、使用括號得到匹配目標、盡量使用非貪婪模式、有換行就用re.s

re.search 掃瞄整個字串並返回第乙個成功的匹配

eg.import re

content = 'extra stings hello 1234567 world_this is a regex demo extra stings'

result = re.match('^hello.*?(\d+).*?demo',content)

print(result) #none

無法匹配

import re

content = 'extra stings hello 1234567 world_this is a regex demo extra stings'

result = re.search('^hello.*?(\d+).*?demo',content)

print(result.group(1))

print(result)

總結:為匹配方便,能用search就不用match

re.sub

替換字串中每乙個匹配的子串後返回替換後的字串

第乙個引數為正規表示式

第二個引數為需要替換的字串

第三個引數為原來的字串

import re

content = 'extra stings hello 1234567 world_this is a regex demo extra stings'

content = re.sub('\d+','replacement',content)

print(content)

import re

content = 'extra stings hello 1234567 world_this is a regex demo extra stings'

content = re.sub('(\d+)',r'\1 8910',content)

print(content)

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...