1. finditer()函数
搜索字符串,返回一个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)
2. split()函数
按照能够匹配的子串,将string分割后返回列表。
格式:
re.split(pattern, string)
可以使用re.split来分割字符串,如:re.split(r’\s+', text)将字符串,按空格分割成一个单词列表。
以数字为分割符,将字符串分割:
print(re.split(r'\d+','asas2kdjs4jds5djdfj1djf0'))
运行结果如下:
['asas', 'kdjs', 'jds', 'djdfj', 'djf', '']
3. sub()函数
使用re替换string中每一个匹配的子串后,返回替换后的字符串。
格式:
re.sub(pattern, repl, string, count)
用-替代,如下:
import re
text = "aaa,bbb,ccc,ddd"
print(re.sub(r',', '-', text))
运行结果如下:
aaa-bbb-ccc-ddd
4. subn()函数
返回替换次数。
格式:
subn(pattern, repl, string, count=0, flags=0)
- 解释:用A替换123中的1,结果为A23,repl就是指的A。
把所有的数字替换为A:
print(re.subn('\d','A','1asd2dkjf34'))
运行结果如下:
('AasdAdkjfAA', 4)
- subn()不仅返回了替换后的字符串,还返回了替换的次数。