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

标签 python regex

我有值列表,每个值都包含“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/

相关文章:

javascript - 使用正则表达式查找整个句子

Python:BeautifulSoup UnboundLocalError

python - 如何在 IPython Notebook 3 中启用行号

regex - 正则表达式匹配给定集合的任何子集?

java - 在java中使用前瞻的电子邮件正则表达式

regex - 在字符串中仅两个下划线之间提取数字模式

javascript - 数字和加号的正则表达式

python - pyodbc 中的清理查询仅返回字段名称

python - Windows 文件路径中的反斜杠?

python - 派克: 'dynamically' append to qtextedit from function