![](/img/trans.png)
[英]Regex match match “words” that contain two continuous streaks of digits and letters or vice-versa and split them
[英]How to match all words that does not contain two digits in a row?
我有值列表,每个值包含“ 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.