常见的正则表达式
1、最简单的正则表达式是普通的字符串,可以匹配自身
2、匹配‘python’, ‘jython’, ‘cython’
'[pjc]ython'
3、匹配一个任意大小写字母或数字
'a-zA-Z0-9'
4、匹配一个任意除‘a’ , ‘b’, 'c’之外的任意字符
'[^abc]'
5、匹配’python’或’perl’
'python|perl' 或 'p(ython)|erl'
6、子模式后面加上问号表示可选。 只匹配‘http: //www .python.org’, ‘http: //python.org’, ‘www .python.org’, ‘python.org’
r'(http://)?(www\.)?python\.org'
7、只能匹配所有http开头的字符串
'^http'
8、允许模式重复0次或多次
'(pattern)*'
9、允许模式重复1次或多次
'(pattern)+'
10、允许模式重复m~n次,在书写时注意逗号后面不能有空格
'(pattern){m,n}'
11、允许模式最多重复n次, 最少0次
'(pattern){,n}'
12、允许模式最少重复m次, 最多不限制次数
'(pattern){m,}'
13、匹配多个(包含0个)a或b,后面紧跟一个字母c
'(a|b)*c'
14、匹配以字母a开头后面带一个或多个字母b的字符串
'(a)b{1,}' 等价于 'ab+'
15、匹配长度为5~20的字符串,必须字母开头并且可带字母、数字、‘_’、’.‘的字符串
'^[a-zA-Z]{1}([a-zA-Z0-9._]){4,19}$'
16、匹配长度为6~20的字符串,可以包含字母数字下划线
'^(\w){6,20}$'
17、检查给定字符串是否为合法的IP地址格式,圆点前要加反斜线,否则可以匹配任意单个字符串
'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$'
18、检查给定字符是否为手机号码格式,只检查格式,不保证手机号一定有效
'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$'
19、检查给定字符串是否只包含英文字母大小写
'^[a-zA-Z]+$'
20、检查给定字符串是否为合法电子邮箱地址格式
'^\w+@(\w+\.)+\w+$'
21、查找字符串中每个字符的最后一次出现
r'(\w)(?!.*\1)'
22、查找字符串中所有出现次数大于1的字符
r'(\w)(?=.*\1)'
23、检查给定字符是否为最多带有2位小数的正数或负数
'^(\-)?\d+(\.\d{1,2})?$'
24、匹配给定字符串中的常见汉字
'[\u4e00-\u9fa5]'
25、检查给定字符串是否为合法身份证格式
'^\d{18}|\d{15}$'
26、匹配指定日期格式,例如 2022-1-13。
'\d{4}-\d{1,2}-\d{1,2}'
27、检查给定字符串是否为强密码,必须同时包含英文大小写字母、数字、特殊字符(如英文逗号、英文句号、下划线),并且长度必须至少8位。
'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[,._]).{8,}$'
28、如果给定字符串中包含 ‘ “ / ; = % ? 则匹配失败。
'(?!.*[\'\"\/;=%?])'
29、匹配任意字符的两次或多次重复出现
'(.)\\1+'
30、匹配连续出现两次的单词
'((?p<f>\b\w+\b)\s+(?p=f))'
31、匹配AABB形式的成员或者字母组合
'((?p<f>.)(?p=f)(?p<g>.)(?p=g))'
32、匹配连续的数字,并且最后一个数字跟着小写字母
'\d+(?=[a-z]+)'
33、匹配连续的数字,并且最后一个数字后面不能跟着小写字母
'\d+(?![a-z]+)'
34、匹配连续的数字,并且第一个数字的前面是小写字母
'(?<=[a-z])\d+'
35、匹配连续的数字,并且第一个数字前面不能跟着小写字母
'(?<![a-z])\d+'
36、匹配三位数字,而且这三个数字的后面不能是数字
'\d{3}(?!\d)'
37、匹配不包含连续字符串’abc‘的单词
'\b((?!abc)\w)+\b'
38、匹配前面不是小写字母的7位数字
'(?<![a-z])\d{7}'
39、匹配"<span>hello world<span>"中的span和hello world
r'(?<=<(\w{4})>)(.*)(?=<\/\1>)'