\d 匹配数字 \w 匹配字母或数字 \s 匹配空白字符,等价[ \t\n\r\f] \大写 与\小写内容相反 [^0-9] 匹配非字数 . 匹配任意字符 [0-9a-zA-Z\_] 匹配一个数字、字母或者下划线 \\\\ 匹配\ * 匹配任意个字符 + 匹配至少一个字符 ? 匹配0个或1个字符 {n} 匹配n个字符 {n,m} 匹配n-m个字符 A|B 匹配A或B ^ 行的开头 $ 行的结束 (?i) 表示所在位置右侧的表达式开启忽略大小写模式 (?s) 表示所在位置右侧的表达式开启单行模式 (?m) 表示所在位置右侧的表示式开启指定多行模式 (?is) 更改句点字符 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配 (?im) 更改 ^ 和 $ 的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配 注意:(?s)通常在匹配有换行的文本时使用 注意:(?m)只有在正则表达式中涉及到多行的“^”和“$”的匹配时,才使用Multiline模式,上面的匹配模式可以组合使用,比如(?is),(?im) 另外,还可以用(?i:exp)或者(?i)exp(?-i)来指定匹配的有效范围
re模块
import re # 使用r前缀,则无需考虑转义 re.match(r'regex',str) # 从字符串开头开始匹配 返回Match对象或None re.search(r'regex',string) # 返回第一个成功匹配的结果 返回Match对象或None re.findall(r'regex',string) # 返回所有成功匹配的结果 返回list或[] re.finditer(r'regex', string) # 返回所有成功匹配的结果 返回迭代器 re.split(r'\s+', 'a b c') # 使用正则表达式切割连续空格 # 使用repl替换string中的匹配项最多count次,0表示全部替换 # repl可以是函数,输入为匹配项,输出为替换内容 re.sub(r'regex',repl,string,count=0) # 使用修饰符re.S或re.I # re.S 匹配节点与节点间的换行,将整个字符串整体进行匹配,否在在每一行内匹配 # re.I 使匹配对大小写不敏感 re.findall(r'regex',string,re.S) m = re.match(r'(group1)(group2)',str) # 分组() m.groups() m.group(0) # group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串 m.span() # 输出匹配范围 re_regex = re.compile(r'regex') # 预编译正则表达式 re_regex.match(str)
正则匹配默认贪婪匹配(尽可能匹配多的字符),使用?采用非贪婪匹配
在线测试网站