python正则表达式用法总结
字符表达
- . : 任意字符
- \d : 任意一个数字字符,\D:一个非数字字符
- \s :匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
- \S : 匹配任何可见字符。等价于[^ \f\n\r\t\v]
- [abcd] : 表示a,b,c,d中任意一个
- [^1] : 不为1任何
- [.] : 只代表 . 不是任意字符
- [0-9a-zA-Z_] = \w
次数限定词
- * : 任意次数,0个或多个
- + : 至少一次,一次或多次
- {1} : 出现一次
- {3,} : 出现3次以上包括3次,最少3次
- {3,7} : 出现最少3次,最多7次
|: 或
line = 'boby12123'
regex_str = '((boby|booby)1212)'
match_obj = re.match(regex_str,line)
if match_obj:
print(match_obj.group(1))
print(match_obj.group(2))
out:
boby1212
boby
贪婪模式和非贪婪模式
贪婪匹配
匹配到对象最后一个满足模式,也可以理解为倒着匹配第一个后停止。
line = 'booooooooobbby12123'
regex_str = '.*(b.*b).*'
match_obj = re.match(regex_str,line)
if match_obj:
print(match_obj.group(1))
out:
bb
非贪婪模式
非贪婪模式 ?
表示从前往后匹配第一个即返回,?只可以加在表示次数符号之后(如:*,+)
line = 'booooooooobbby12123'
regex_str = '.*?(b.*b).*'
match_obj = re.match(regex_str,line)
if match_obj:
print(match_obj.group(1))
out:
booooooooobbb
line = 'booooooooobbby12123'
regex_str = '.*?(b.*?b).*'
match_obj = re.match(regex_str,line)
if match_obj:
print(match_obj.group(1))
out:
booooooooob
汉字匹配 :[\u4E00-\u9FA5]
常用正则表达式
各种类型数字正则表达式:https://www.cnblogs.com/zhuangfei/p/8205023.html