我构造了这样的图案对象
text_regex = re.compile(r"""(
(\w+)
)""", re.UNICODE|re.VERBOSE)
我尝试过:
In [75]: text_regex.findall("put returns between paragraphs")
Out[75]:
[('put', 'put'),
('returns', 'returns'),
('between', 'between'),
('paragraphs', 'paragraphs')]
它返回双重匹配。
如果我保留所附的()
,
如何避免重复?
答案 0 :(得分:2)
从正则表达式中删除多余的括号:
text_regex = re.compile(r"""(\w+)""", re.UNICODE|re.VERBOSE)
text_regex.findall("put returns between paragraphs")
收益
['put', 'returns', 'between', 'paragraphs']
您正在获取元组列表,因为findall documentation指出:
如果模式中存在一个或多个组,则返回一个组列表;如果模式包含多个组,则这将是一个元组列表。
因此,如果您想要一个组但不希望捕获组,请使用(?:PATTERN)
而不是regular expression documentation中提到的(PATTERN)
。