【发布时间】:2020-11-07 18:11:08
【问题描述】:
例如我有这个内容:
<p>first line</p>
<p> </p>
<ifelse id="df950c19-e3f6-4e14-872b-d73a78e17f8e" typ="ifelse" value="">
<p>Example text</p>
<p><var-input id="80585bab-49a4-4841-b87c-1e004c1a31d1" typ="textzeile" value="" class="mceNonEditable">Textzeile</var-input> ...</p>
</ifelse>
<p>Another ifelse tag</p>
<ifelse id="1199fc18-1f12-4483-b81c-94c8945e6390" typ="ifelse" value="">
<p>This is an <strong>example</strong></p>
</ifelse>
<p> </p>
我在获取打开和关闭 ifelse 标记之间的内容时遇到问题,因为该内容可以包含任何字符,也可以包含换行符等。目前,如果我只有<ifelse ..>...</ifelse> 的一个元素,则此正则表达式效果很好:
<ifelse id="(?<id>[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})" typ="(?:.*)" value="(?:.*)">(?<content>[\s\S\w\W\d\D]*)<\/ifelse>
但如果有两个或更多 ifelse 元素,正则表达式匹配第一个打开标签和最后一个关闭标签之间的全部内容。
我该如何解决这个问题?
最后我想在 JavaScript 和 Python 中使用正则表达式。
【问题讨论】:
-
搜索“非贪婪正则表达式”
-
<ifelse.*?</ifelse>怎么样? -
不匹配换行符(终止符)。
标签: javascript python regex