如何用Regex排除含特定字符串的匹配?DOCX转XHTML列表处理
如何排除包含特定字符串的正则匹配?
我查了相关主题的帖子,但没找到能解决问题的方案。核心问题是把DOCX文档转换成XHTML(即EPUB格式)后,嵌套列表的格式出了问题,示例HTML代码如下:
<ol style="list-style-type: decimal"> <li>lorem1</li> <li>lorem2</li> <li>lorem3</li> <li>lorem4</li> </ol> <ol style="list-style-type: lower-alpha"> <li>ipsum-a</li> </ol> <ol style="list-style-type: lower-alpha"> <li>ipsum-b</li> <li>ipsum-c</li> <li>ipsum-d</li> </ol> <ol style="list-style-type: decimal"> <li>lorem5</li> </ol> <ol style="list-style-type: decimal"> <li>lorem6</li> </ol>
这是一个包含字母子列表的编号列表,我需要匹配最后两个<ol>标签——它们都是独立的decimal类型块。规则是:只要捕获组中包含lower-alpha,就排除该匹配。期望的匹配结果如下:
<ol style="list-style-type: decimal"> <li>lorem5</li> </ol> <ol style="list-style-type: decimal"> <li>lorem6</li> </ol>
我目前使用的单行正则(模式为//gs)如下:
(<ol[^>]+(?=decimal)[^>]+">\s*)(.*?)(<ol[^>]+(?=decimal)[^>]+">)
但这个正则的匹配结果不正确,因为它包含了带有lower-alpha的标签组。我尝试过使用负前瞻,但没有得到任何匹配结果。我是正则新手,不确定条件匹配或子函数这类元素能不能帮上忙,恳请大家提供帮助。
内容的提问来源于stack exchange,提问作者tobias
相关产品推荐
相关产品推荐

