正则表达式中前向否定界定符:表达式为(?! re),当所含表达式不包含在字符串当前位置时成功匹配。
匹配举例如下:
# vi test.py
#字符串匹配含有boy的内容,剔除girl字符串内容
import re
boy1='boy1 50.00 = ok'
boy3='0011 boy3 70.00 ok'
girl2='girl2 60.00 = ok'
girl4='0012 girl4 80.00 ok'
pattern = re.compile(r'^(?:(?!girl).)*\s(\d+\.?\d+)\s*(=\s*)?ok', re.IGNORECASE)
print(pattern.search(boy1).groups()) if pattern.search(boy1) else pattern.search(boy1)
print(pattern.search(boy3).groups()) if pattern.search(boy3) else pattern.search(boy3)
print(pattern.search(girl2).groups()) if pattern.search(girl2) else pattern.search(girl2)
print(pattern.search(girl4).groups()) if pattern.search(girl4) else pattern.search(girl4)
执行结果:
# python test.py
('50.00', '= ')
('70.00', None)
None
None
网友评论