Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何匹配一行中不包含两个数字的所有单词?_Python_Regex - Fatal编程技术网

Python 如何匹配一行中不包含两个数字的所有单词?

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}]的东西会起作用,但它并没有像我预期的那样起作用。使用否定的前瞻断言(?!…): 只有在后面没有下划线

我有一个值列表,每个值都包含“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}]的东西会起作用,但它并没有像我预期的那样起作用。

使用否定的前瞻断言
(?!…)

只有在后面没有下划线和两位数字时,此模式才与后跟两位数字的
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”的内容?是的。但请注意,通常很难为“负模式”编写正则表达式。另见: