Python 如何匹配一行中不包含两个数字的所有单词?
我有一个值列表,每个值都包含“pt”+2位数字部分。但如果在这之后有“_digitdigit”-这个值应该被排除 应匹配:Python 如何匹配一行中不包含两个数字的所有单词?,python,regex,Python,Regex,我有一个值列表,每个值都包含“pt”+2位数字部分。但如果在这之后有“_digitdigit”-这个值应该被排除 应匹配:data\u pt01\u pr、data\u pt02\u 1\u pr、data\u pt02\u 2 不应匹配:数据\u pt01\u pr,数据\u pt22\u 22,数据\u pt01\u 00\u ABCD\u 1\u bk\u vi 我在想类似于[^\d{2}]的东西会起作用,但它并没有像我预期的那样起作用。使用否定的前瞻断言(?!…): 只有在后面没有下划线
data\u pt01\u pr、data\u pt02\u 1\u pr、data\u pt02\u 2
不应匹配:数据\u pt01\u pr,数据\u pt22\u 22,数据\u pt01\u 00\u ABCD\u 1\u bk\u vi
我在想类似于[^\d{2}]的东西会起作用,但它并没有像我预期的那样起作用。使用否定的前瞻断言
(?!…)
:
只有在后面没有下划线和两位数字时,此模式才与后跟两位数字的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
使用否定的前瞻断言
(?!…)
:
只有在后面没有下划线和两位数字时,此模式才与后跟两位数字的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
这可能不起作用,因为您没有考虑下划线字符。这可能不起作用,因为您没有考虑下划线字符。谢谢!所以这是所有任务的唯一方法,比如查找包含“not smth”和“not smth”的内容?是的。但请注意,通常很难为“负模式”编写正则表达式。另见:谢谢!所以这是所有任务的唯一方法,比如查找包含“not smth”和“not smth”的内容?是的。但请注意,通常很难为“负模式”编写正则表达式。另见: