我有值列表,每个值都包含“pt”+ 2 位数字部分。但如果之后有“_digitdigit” - 该值应该被排除。
应匹配:data_pt01_pr、data_pt02_1_pr、data_pt02_2
不应匹配:data_pt01_01_pr、data_pt22_22、data_pt01_00_ABCD_1_bk_vi
我以为像 [^\d{2}] 这样的东西就能解决问题,但它并没有像我预期的那样工作。
最佳答案
使用否定先行断言(?!...)
:
pattern = r'pt\d\d(?!_\d\d)'
此模式匹配 pt
后跟两位数字仅当后面不跟有下划线和两位数字。
>>> p = re.compile(pattern)
>>> bool(p.search("data_pt01_pr"))
True
>>> bool(p.search("data_pt02_2"))
True
>>> bool(p.search("data_pt01_01_pr"))
False
>>> bool(p.search("data_pt22_22"))
False
关于python - 如何匹配所有不包含连续两位数字的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10318936/