样品:
>>> line = 'the the, To to'
>>> re.findall(r'\b(\w+) \1', line)
['the']
>>> re.findall(r'\b(\w+) \1', line, re.I)
['the', 'To']
>>> re.sub(r'\b(\w+) \1', r'\1', line, re.I)
'the, To to'
预期:
'the, To'
正则表达式适用于其他地方,如
s/\v<(\w+) \1/\1/gi
s/\b(\w+) \1/$1/gi
-r 's/\b(\w+) \1/\1/gi'
这是一种已知行为吗?什么是变通方法?我的Python版本是3.4.3
,如果这有所不同。
答案 0 :(得分:3)
re.sub(pattern,repl,string,count = 0,flags = 0)
您将re.I
作为count
传递(最多允许2
次替换),而不是flags
。相反,尝试:
>>> re.sub(r'\b(\w+) \1', r'\1', s, flags=re.I)
# ^ note
'the, To'