输入是很多差异很小的文件,例如。 h3可以是h2,也可以是两个结束 - 所以想要使用(ver1 | ver2 | ver3),但只想替换部分匹配。
正则表达式(不起作用)
filedata = re.sub(r"""
\uF0B7<br/>\n # Ě<br/> this means punctation mark
(?P<txt>.*?) # this is text
(?P<end>(?:<br/>)\n|\n<h) # this is versions of endings
""",'\n<li>\g<txt></li>\g<end>',filedata, flags=re.S|re.VERBOSE)
输入:
(...)
\uF0B7<br/>
Something1<br/>
\uF0B7<br/>
Something2<br/>
\uF0B7<br/>
Something3
<h3>Next Topic
(...)
不幸的是 - (?:<br/>)
无效 - <br/>
位于\g<end>
结果:
(...)
<li>Something1</li><br/>
<li>Something2</li><br/>
<li>Something3</li>
<h3>Next Topic
(...)
预期结果:
(...)
<li>Something1</li>
<li>Something2</li>
<li>Something3</li>
<h3>Next Topic
(...)
(我知道,<li>
需要<ul>
或<dl>
,但这是在其他正则表达式中)