Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有这样的模式(找到 3 个单词的缩写)
s='([A-Z][a-z]+ ){2,4}\([A-Z]{2,4}\)'
我想找到
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()再次返回完整匹配项。
.findall()
(...)
(?:...)