更新:此问题是由开发商在commit be893e9Python的正则表达式模块VS重新模块 - 模式不匹配
如果你遇到了同样的问题得到解决,更新您的regex
模块。
您需要版本2017.04.23
或以上。
正如this answer 指出我需要this regular expression:
(?i)\b((\w{1,3})(-|\.{2,10})[\t ]?)+(\2\w{2,})
与regex
模块也工作...
import re # standard library
import regex # https://pypi.python.org/pypi/regex/
content = '"Erm....yes. T..T...Thank you for that."'
pattern = r"(?i)\b((\w{1,3})(-|\.{2,10})[\t ]?)+(\2\w{2,})"
substitute = r"\2-\4"
print(re.sub(pattern, substitute, content))
print(regex.sub(pattern, substitute, content))
输出:
"Erm....yes. T-Thank you for that."
"-yes. T..T...Thank you for that."
问:如何我都要写这个正则表达式来使regex
模块反应,因此用同样的方法re
模块呢?
使用re
模块不是一个选项,因为我需要动态长度的后视。
对于澄清:这将是很好,如果正则表达式将与这两个模块的工作,但在最后,我只需要它regex
澄清:你需要这个表达式与__both__'re'和'工作正则表达式“,还是只用'正则表达式”? –
另外,从字面上看,'regex'的pypi页面上的第一句话是*“这个正则表达式的实现是向后兼容标准的're'模块”*,所以有人已经报告过这个错误? –
为什么使用'(?<= \ b)'而不是'\ b'这是一个零长度的断言。 –