作者回复: findall、match、sub、match分别是不同的函数功能,并非是扩展,例如search函数是找到第一个匹配的字符串,findall是找到所有匹配的字符串 根据需要使用不同的函数。如下: import re string = "x abc y 123 z 123" pattern = re.compile(r'\d+') print(re.search(pattern,string)) print(pattern.findall(string)) # 输出结果 # <re.Match object; span=(8, 11), match='123'> # ['123', '123'] 这些函数之间都可以配合使用的。
作者回复: 问题原因: \n是转义字符字符,默认的re.sub()会让转义字符先转义,再正则匹配 解决办法: def sub(pattern, repl, string, count=0, flags=0): sub函数第四个参数叫做标志位,可以使用 re.S 使.匹配包括换行在内的所有字符 re.I 忽略大小写,re.M 多行匹配等功能 将 p2 = re.sub(r'#.*$', '', phone) 这行增加关键字参数 p2 = re.sub(r'#.*$', '', phone, flags=re.S) 可以实现用.匹配\n
作者回复: r是声明这个字符串里面是正则表达式的元字符