搜索字符串,返回一個Match對象的迭代器(包含匹配的開始和結束的位置)。找到正則匹配的所有子串,把它們作為一個迭代器返回。
格式:
re.finditer(pattern, string, flags=0)
例如:
import re
itext = re.finditer(r'\d+','12 edueduedu44coder deducoder, 11skdh ds 12') #匹配所有的數字
for i in itext:
print(i)
print(i.group())
print(i.span()) #span()返回一個元組包含匹配 (開始,結束) 的位置
運行結果如下:
<re.Match object; span=(0, 2), match='12'>
12
(0, 2)
<re.Match object; span=(12, 14), match='44'>
44
(12, 14)
<re.Match object; span=(31, 33), match='11'>
11
(31, 33)
<re.Match object; span=(43, 45), match='12'>
12
(43, 45)
按照能夠匹配的子串,將string分割後返回列表。
格式:
re.split(pattern, string)
可以使用re.split來分割字符串,如:re.split(r’\s+', text)將字符串,按空格分割成一個單詞列表。
以數字為分割符,將字符串分割:
print(re.split(r'\d+','asas2kdjs4jds5djdfj1djf0'))
運行結果如下:
['asas', 'kdjs', 'jds', 'djdfj', 'djf', '']
使用re替換string中每一個匹配的子串後,返回替換後的字符串。
格式:
re.sub(pattern, repl, string, count)
用-替代,如下:
import re
text = "aaa,bbb,ccc,ddd"
print(re.sub(r',', '-', text))
運行結果如下:
aaa-bbb-ccc-ddd
返回替換次數。
格式:
subn(pattern, repl, string, count=0, flags=0)
把所有的數字替換為A:
print(re.subn('\d','A','1asd2dkjf34'))
運行結果如下:
('AasdAdkjfAA', 4)