. 匹配除换行符外的任意一个字符 [abc] 匹配到abc 中的任意一个字符 [^abc] 匹配到abc之外的的任意字符 [a-z] 匹配所以小写字符集合 [A-Z] [0-9] [^a-z] \b 匹配单词的边界 \d digit 匹配一位数字 \D 匹配非数据 \s 匹配1位空白字符,包括换行制表符 空格 \S 匹配非空白字符 \w 匹配[a-zA-Z0-9_],包括中文的字符 \W 匹配\w之外的字符
说明:大写均表示反面匹配。
单行模式 单行模式下 . 可以匹配任意一个字符,换行符仅仅做字符用,不表示匹配终止。 ^ 表示整个字符串的开始; $ 表示整个字符串的结束; 单行模式表示只有一行,不存在换行是说法,正常情况下很少使用。
多行模式 多行模式下,换行符作为分界。. 不能匹配换行符。 ^ 表示该行的行首 $ 表示该行的行尾
说明:\是作为特殊字符的逃逸符,\\\表示\。
* 表示前面的正则表达式重复0次或者多次 + 表示重复至少一次 ? 表示重复0或者1次 {n} 重复固定的n次 {n,} 至少n次 {n,m} n到m次
x|y 匹配x或者匹配y,(w|f)ood 可以匹配到wood 或者food。
小括号括起来一个表达式,表示把该表达式进行分组。分组的作用是便于后边的引用(位置参数),使用#(#为数字)引用。
(patterm) : 分组 # : 引用
举例: (very) \1 可以匹配到very very
(?
) 只改变优先级,不进行分组。 (?exp) 或者 (?'name'exp) 给分组命令,可以通过名称引用。 说明:python下需要使用(?Pexp)进行使用。断言就要预测将会出现的字符。由于概念过于生涩,此处仅仅书写表达式。
正预测断言 f(?=oo) : 断言f后(右侧)一定会出现oo; (?<=f)ood:断言ood的左侧一定会出现f;
负预测断言 (?!exp): 断言exp一定不会出现在右侧; (?<!exp):断言exp一定不会出现在左侧。(?<!f)ood ood的左侧一定不会出现f
注释 (?#cooment) f(?=oo)(?#注释的位置)
贪婪模式:尽可能的多匹配; 非贪婪模式:匹配最小部分,在重复的符号后边加上一个?。
正则表达式默认使用的是贪婪模式。
*? 匹配任意次,但尽可能的少重复 +? 匹配至少1次,但尽可能的少重复 ? 匹配0次或者1次,但尽可能的少重复 {n,}? 匹配至少n次,但尽可能的少重复 {n,m}? 匹配至少n次,至多m次,但尽可能的少重复
python下使用正则表达式,需要使用re模块。
本文作者:mykernel
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!