正则表达式多用于过滤敏感字符之中,看见经常让人头疼,这几天期末考试,趁机学了一下,并整理了一下,算是干货吧
目录
基础
字符组
[Pp]ython匹配Python或python
[0-9]匹配任意数字 [^0-9]不匹配数字
[a-zA-Z]匹配任意字母
[0-9a-zA-Z]匹配数字大小写字母
[0-9\-]匹配0-9和-用转义符隔开
注:如果后面还有的话,则[]中的字符只选择一个
快捷方式
[\d]匹配所有数字[\D]匹配所有非数字下面同理
[\w]匹配所有数字大小写
[\s]匹配空白字符,空格,tab,换行等
[\b]匹配单词边界,从很长的一堆里面匹配单个东西
特殊符号
^匹配开头 ^python匹配开头是python的字符
$匹配开头 python$匹配结尾是python的字符
.匹配任意字符,但是换行符不能匹配
.匹配任意长度字符...匹配三个一组的字符
?匹配可以出现可以不出现hah?a
匹配多个数据
\d{9}匹配所有由9个字符构成的数字
\d{8}{9}匹配由8个或9个构成的数字
\d{8}{9}?匹配到8个构成的数字
\d{3,}匹配三个以上的数字
特殊地
*表示{0,} +表示{1,}
进阶
分组
捕获分组
用括号只提取括号内的东西
(\d{3})-(\d{4})
123-4567
只提取了1234567
非捕获分组
回溯引用
<(\w+)>(.*?)</\1>匹配<a>与<a>之间的字符
后面的1与前面的\w+相等
先行断言
简单例子:haha(?=ha)只会匹配到hahaha前面的haha
(?=.?*)[a-z].+(?=.*?)[A-Z].+
表示所匹配的字符串中至少包含一个大小写
后行断言
简单例子:(?<=a)hello(?=b)就匹配到ahellob中的hello