正则表达式 - 匹配捕获组之前的模式(来自捕获)

时间:2015-12-27 14:41:50

标签: python regex python-2.7 replace

我必须将文字与此方案相匹配:

capture [\w\-\/]* wich are not [']   (\1)
capture [']+ wich follow (\2)
and replace \2\1\2 with \1

实施例:

my text is: l''''text'''
right output: l'text

我试过了:

re.sub(r"(\5)(?=((([\w\-\/](?<!'))+)('+)))", r"\2", text)

1 个答案:

答案 0 :(得分:2)

您可以匹配字符串后面的先前匹配的引号:

('+)([\w/-]+)\1

\1匹配完全匹配的相同文本组。

https://regex101.com/r/zQ0hM2/2的在线演示。

Python会话演示:

>>> import re
>>> text = "l''''text'''"
>>> re.sub(r'''('+)([\w/-]+)\1''', r'\2', text)
"l'text"