0

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

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

我想找到

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

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

4

1 回答 1

4

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

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

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

于 2012-09-19T13:53:33.330 回答