【发布时间】:2011-02-05 08:41:55
【问题描述】:
我需要在以=? 开头并以?= 结尾的文本字符串中查找并翻译它们。我以这样的表达结束:
re.sub('=\?[\w\?\-\/=\+\:\;_\,\[\]\(\)\<\>]+\?=', decode_match, string)
它在 95% 的情况下都有效,但它会因类似的字符串而失败:
=?utf-8asdfaDDS23=eFF?=-=?utf-8?eadf-,=?=
有人可以帮忙吗?
【问题讨论】:
-
你确定你的输入是这样的吗?
-
我喜欢 jswolf 的简单回答,但是如果您在原始正则表达式的加号之后添加一个惰性量词(即
'=\?[\w\?\-\/=\+\:\;_\,\[\]\(\)\<\>]+?\?='),它也应该可以工作(如在此处测试:ideone.com/601LA ) -
那更好 '=\?(?:[\w\?\-\/=\+\:\;_\,[]()\]+?)\ ?='
-
如果您想要整个匹配字符串(包括分隔符),我认为将其设为非捕获组是没有意义的。如果您只想要标记(分隔符之间的文本),请将其保留为捕获组,如 ideone 测试中所示。