Day14:正则表达式与re模块
正则表达式
- 是一种匹配字符串内容的规则
- 元字符 \d \w \s \n \t ^ $
- 量词 * + ? {}
- 默认贪婪匹配原则
- 字符集量词贪婪匹配的标识符 :?
- ? 在正则中的应用:量词,非贪婪标志 findall取消分组优先,分组命名
re模块
- re模块和正则表达式的关系类似于time模块和时间,是一种利用模块里面的功能使用
正则表达式的规则
- findall 返回所有满足匹配条件的结果,放在列表里
- search 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
- match 在字符串开始处开始匹配,如果第一个匹配不到,就返回None,其它同search
- split
ret = re.split('[ab]', 'dsaerbcd') # 先按'a'分割得到'ds'和'erbcd',在对'ds'和'erbcd'分别按'b'分割 print(ret) # ['ds', 'er', 'cd']
- sub
ret = re.sub('\d', 'H', 'eva3egon4yuan4', 1)#将数字替换成'H',参数1表示只替换1个 print(ret) #evaHegon4yuan4
- subn
ret = re.subn('\d', 'H', 'eva3egon4yuan4')#将数字替换成'H',返回元组,显示替换的次数 print(ret) #('evaHegonHyuanH', 3)
- compile
obj = re.compile('\d{3}') #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字 ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串 print(ret.group()) #结果 : 123
- finditer
import re ret = re.finditer('\d', 'ds3sy4784a') #finditer返回一个存放匹配结果的迭代器 print(ret) # <callable_iterator object at 0x10195f940> print(next(ret).group()) #查看第一个结果 print(next(ret).group()) #查看第二个结果 print([i.group() for i in ret]) #查看剩余的左右结果

浙公网安备 33010602011771号