正则表达式常用语法:
| 字符 | 使用说明 | 字符 | 使用说明 | 字符 | 使用说明 | 字符 | 使用说明 |
| [abc] | 单个字符:a或b或c | [^abc] | a, b, c以外的单个字符 | . | 任意字符 | \s | 空字符 |
| \S | 非空字符 | \d | 数字字符 | \D | 非数字字符 | \w | 单词(字母、数字、下划线) |
| \W | 非单词 | \b | 单词边界 | ^ | 开头 | $ | 结尾 |
| (...) | 分组 | (a|b) | a或b | a* | 重复0次或多次 | a? | 重复0次或1次 |
| a+ | 重复1次或多次 | a{3} | 重复3次 | a{3,} | 重复3次或多次 | a{3,5} | 重复3到5次 |
| ? | 非贪婪匹配 | (?:abc) | 非捕获分组 | (?=abc) | 正向匹配abc | (?!abc) | 正向不匹配abc |
| \xhh | 十六进制 hh字符 | \uhhhh | 十六进制hhhh字符 | \u{hhhh} | {仅当设置了u标志时}十六进制hhhh字符 | \cX | 控制字符 |
| \0 | 空字符 | \a | alert字符 | \t | 制表符 | \n | 换行符 |
| \v | 垂直制表符 | \f | 换页符 | \r | 回车符 | \e | escape字符 |
| 说明 | 正则表达式 | 说明 | 正则表达式 |
| 数字 | ^[0-9]*$ | n位的数字 | ^\d{n}$ |
| 至少n位的数字 | ^\d{n,}$ | m-n位的数字 | ^\d{n,m}$ |
| 非零开头的最多带两位小数的数字 | ^([1-9][0-9]*)+(.[0-9]{1,2})?$ | 非负整数 | ^\d+$ |
| 非正整数 | ^-\d+$ | 汉字 | ^[\u4e00-\u9fa5]{0.}$ |
| 英文和数字 | ^[A-Za-z0-9]+$ | 长度为3-20的所有字符 | ^.{3,20}$ |
| 由26个英文字母组成的字符串 | ^[A-za-z]+$ | 中文、英文、数字、下划线 | ^[\u4E00-\u9FA5A-Za-z0-9_]+$ |
| Email地址 | ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$ | 域名 | [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? |
| 手机号码 | ^(13[0-9] | 日期格式 | ^\d{4}-\d{1,2}-\d{1,2} |
| IP地址 | \d+.\d+.\d+.\d+ | 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线) | ^[a-zA-Z]\w{5,17}$ |
实例一:正则匹配邮箱
# 匹配所有的邮箱
import re str1 = 'fdg.lll.pp123@163.com hdfh.abc@qq.com hidfsd@qq.com.com gfgfa@qq.com bdfdg@163.com' reg_str1 = r'(?:[0-9a-zA-Z_]+.)+@[0-9a-zA-Z]{1,13}\.[com,cn,net]{1,3}'#正则匹配出邮箱 mod = re.compile(reg_str1) items = mod.findall(str1) print(items)
# 字符串中是否存在邮箱地址
import re text="abc12222@qq.comhere" if re.search(r'[0-9a-zA-Z_]{0,19}@[0-9a-zA-Z]{1,13}\.[com,cn,net]{1,3}',text): print('has Email address') else: print('No Email address!')
只允许英文字母、数字、下划线、英文句号、以及中划线组成
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
名称允许汉字、字母、数字,域名只允许英文域名
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
实例二: 正则匹配IP地址
pattern = r'^((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)){3}' \ '([0-1]{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])$' mod = re.compile(pattern) res = mod.search('255.25.25.111') if res: print('match success %s' % res) else: print('match fail')
浙公网安备 33010602011771号