Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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 re.findall()不会返回所有字符_Python_Regex - Fatal编程技术网

Python re.findall()不会返回所有字符

Python re.findall()不会返回所有字符,python,regex,Python,Regex,我有这样的模式(找到3个单词的缩写) 我想找到 line='National Health Service (NHS)' p=re.findall(s,line) 但是p只是['Service'],而不是整个字符串。为什么?您没有正确分组匹配,请改用此选项: s='(?:[A-Z][a-z]+ ){2,4}\([A-Z]{2,4}\)' .findall()返回整个匹配,除非您定义了捕获组((…)),此时它将返回组中包含的结果。上面的模式使用非捕获组((?:…))。由于这会使表达式没有任何捕

我有这样的模式(找到3个单词的缩写)

我想找到

line='National Health Service (NHS)'
p=re.findall(s,line)

但是p只是['Service'],而不是整个字符串。为什么?

您没有正确分组匹配,请改用此选项:

s='(?:[A-Z][a-z]+ ){2,4}\([A-Z]{2,4}\)'

.findall()
返回整个匹配,除非您定义了捕获组(
(…)
),此时它将返回组中包含的结果。上面的模式使用非捕获组(
(?:…)
)。由于这会使表达式没有任何捕获组,
.findall()
再次返回完全匹配项。

如果未正确分组匹配项,请改用以下方法:

s='(?:[A-Z][a-z]+ ){2,4}\([A-Z]{2,4}\)'

.findall()
返回整个匹配,除非您定义了捕获组(
(…)
),此时它将返回组中包含的结果。上面的模式使用非捕获组(
(?:…)
)。因为这样会使表达式没有任何捕获组,
.findall()
会再次返回完全匹配项。

这是正确的,但有助于解释原因。@StevenRumbalski:是的,抱歉,有一段时间没有捕获组。这是正确的,但有助于解释原因。@StevenRumbalski:是的,抱歉,有一点时间不够了。你为什么要整根绳子?这就像什么都不做一样。你为什么要整根绳子?这和什么都不做是一样的。