工作学习中常用的正则表达式总结。正则表达式是一种特殊的字符序列,能帮助检查字符串是否与某种模式相匹配。
正则基础元字符
关于正则表达式的基础语法和字符释义讲解。不懂的时候翻阅一下即可,无需死记硬背。
常用元字符
元字符有 . \ [ ] ( ) ^ $ | \\ ? * + { } 共 11 种。
常用量化符
量化符也叫重复修饰符,将紧挨着量化符前面的那个字符,匹配 0 次、1 次或者多次。
在 *?, +?, ?? 中,*, + 和 ? 修饰符都是贪婪的,在字符串进行尽可能多的匹配。在修饰符之后添加 ? 将使样式以非贪婪方式或者最小方式进行匹配;尽量少的字符将会被匹配。
常用模块参数
re.A:只匹配 ASCII 字符re.I:忽略大小写re.L:语言依赖re.M:多行模式re.X:冗长模式re.S:点 dot 匹配全部字符re.U:Unicode 匹配
其他常用符号示意
[] 字符集合
字符可以单独列出,比如 [amk] 匹配 'a'、'm' 或者 'k'。
正则函数
re.compile(pattern, flags=0)
将正则表达式的样式编译为一个正则表达式对象(正则对象),通过这个对象的方法 match、search() 等做匹配。这个表达式的行为可以通过指定标记的值来改变。值可以是任意变量,可以通过位的 OR 操作(| 操作符)来结合。
prog = re.compile(pattern)
如果需要多次使用这个正则表达式的话,使用 re.compile() 并保存这个正则对象以便复用,可以让程序更加高效。通过 re.compile() 编译后的样式和模块级的函数会被缓存,所以少数的正则表达式使用无需考虑编译的问题。
re.search(pattern, string, flags=0)
扫描整个字符串找到匹配样式的第一个位置,并返回一个相应的匹配对象。如果没有匹配,就返回一个 None。这和找到一个零长度匹配是不同的。
# \w 用来匹配单个字符,包括 a-z A-Z 0-9 _
re.match(pattern, string, flags=0)
如果 string 开始的 0 或多个字符匹配到了正则表达式样式,就返回一个相应的匹配对象。如果没有匹配,就返回 None;注意它跟零长度匹配是不同的。即便是 MULTILINE 多行模式,re.match() 也只匹配字符串的开始位置,而不匹配每行开始。如果你想定位 string 的任何位置,使用 search() 来替代。
# \w 用来匹配单个字符,包括 a-z A-Z 0-9 _
re.fullmatch(pattern, string, flags=0)
如果整个 string 匹配到正则表达式样式,就返回一个相应的匹配对象。否则就返回一个 None;注意这跟零长度匹配是不同的。


