繁体   English   中英

如何匹配所有连续不包含两位数字的单词?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM