1. " * + . ?"
". " 匹配除换行符的任意一个字符
"*" 0次或多次匹配
"+" 1次或多次匹配
"?" 0次或一次匹配
2. \s\S \w\W \d\D
\s 匹配空格
\S 匹配非空格
\w (0-9, a-z, and A-Z) 加上下划线"_"
\W
\d 匹配数字
\D 匹配非数字
3. ^ $
^ 匹配字符串开头
& 匹配字符串结尾
4.[] () {}
[] 集合 [abc]表示a、b、c都匹配
{} 匹配长度 {4} {2,7}
()
5. \b
\b 单词边界
6.贪婪匹配和非贪婪匹配
*?重复任意次,但尽可能少重复
+?重复1次或更多次,但尽可能少重复
??重复0次或1次,但尽可能少重复
{n,m}?重复n到m次,但尽可能少重复
{n,}?重复n次以上,但尽可能少重复
7.捕获
()
\1
8.零宽断言
你想匹配但不想捕获
(?=exp)也叫零宽度正预测先行断言
它断言自身出现的位置的后面能匹配表达式exp。比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。
(?<=exp)也叫零宽度正回顾后发断言
它断言自身出现的位置的前面能匹配表达式exp。比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。
下面这个例子同时使用了这两种断言:(?<=\s)\d+(?=\s)匹配以空白符间隔的数字(再次强调,不包括这些空白符)。
9.python re模块的 match() search() findall() sub() compile()
参考链接:正则表达式30分钟入门教程
网友评论