python中的正则
什么是正则表达式
正则表达式是匹配符合某些规则的字符串数据
一个正则表达式指定了一集与之匹配的字符串;模块内的函数可以让你检查某个字符串是否跟给定的正则表达式匹配(或者一个正则表达式是否匹配到一个字符串,这两种说法含义相同)。
正则表达式可以拼接; 如果 A 和 B 都是正则表达式, 那么 AB 也是正则表达式。 通常, 如果字符串 p 匹配 A 并且另一个字符串 q 匹配 B, 那么 pq 可以匹配 AB。除非 A 或者 B 包含低优先级操作,A 和 B 存在边界条件;或者命名组引用。所以,复杂表达式可以很容易的从这里描述的简单源语表达式构建。
正则表达式语法
| \d | 匹配数字,0-9 |
| \D | 匹配非数字,不是数字 |
| \s | 匹配空白,空格,tab键 |
| \S | 匹配非空白 |
| \w | 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字 |
| \W | 匹配特殊字符,即非字母、非数字、非汉字 |
1 import re 2 3 4 # 使用\d进行匹配 5 ret = re.match(r"嫦娥\d号","嫦娥1号发射成功") 6 print(ret.group())
执行结果:
嫦娥1号
| . | 匹配任意1个字符(除了\n) |
| [] | 匹配[]中列举的字符 |
| + | +号代表前面的字符必须至少出现一次,也可以出现多次(大于等于1) |
| * | *号代表前面的字符可以不出现也可以出现一次或者多次(0次,1次,多次) |
| ? | ?号代表前面出现的字符最多只可以出现一次或者不出现(0次,1次) |
| {m} | 匹配前一个字符出现m次 |
| {m,n} | 匹配前一个字符出现从m到n次 |
#需求:匹配出一个字符串第一个字母为大小字符,后面都是小写字母并且这些小写字母可 有可无 import re ret = re.match("[A-Z][a-z]*","M") print(ret.group()) ret = re.match("[A-Z][a-z]*","MnnM") print(ret.group()) ret = re.match("[A-Z][a-z]*","Aabcdef") print(ret.group())
执行结果:
M
Mnn
Aabcdef
例2({m},{m,n}):
#需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线 import re ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678") print(ret.group()) ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66") print(ret.group())
执行结果:
12a3g4
1ad12f23s34455ff66
| ^ | 匹配字符串开头 |
| $ | 匹配字符串结尾 |
match_obj = re.match("^\d.*\d$", "4hello4") if match_obj: # 获取匹配结果 print(match_obj.group()) else: print("匹配失败")
运行结果:
4hello4
匹配除了自定字符以外都匹配
[^指定字符]: 表示除了指定字符都匹配
需求: 第一个字符除了aeiou的字符都匹配
import re match_obj = re.match("[^aeiou]", "h") if match_obj: # 获取匹配结果 print(match_obj.group()) else: print("匹配失败")
执行结果:h

浙公网安备 33010602011771号