我有一个类似的字符串:
Hello +++this--- is a funny +++string--- with words inside
我需要查找被+++
和---
包围的字词,并将+++
和---
符号替换为html
标记,例如<a>word</a>
以便上面的文字成为:
Hello <a>this</a> is a funny <a>string</a> with words inside
我目前正在使用以下正则表达式并使用sub
指令:
rgx = re.compile(r'(?:\+\+\+)(?P<word>.+)(?:\-\-\-)')
output = rgx.sub('<a>\\g<word></a>')
我得到的输出是:
Hello <a>this--- is a funny +++string</a> with words inside
如您所见,只考虑了第一个和最后一个+++
/ ---
。中间人似乎被忽略了。显然,第一个和最后一个+++
/ ---
之间的大字符串匹配我的正则表达式。
如何让re
逐个匹配所有群组,而不考虑重叠匹配?
注意:我已尝试在捕获组中使用^\+
和^\-
,但由于+
或{{1},它无法正常工作可以是任何单词,只要它不是-
或+++
,就应保持原样。