我正在通过正则表达式过程将 XML 文档作为文本文档传递。
<YaddaYaddaPrecedingMarkup>includes (a) and (b) and (c) and (d) and ...
<MyElement>SECTIONBEGINS (a) Item A (b) Item B (c) Item C (d) Item D</MyElement>
<YaddaYaddaFollowingMarkup>includes (a) and (b) and (c) and (d) and ...
我希望我的正则表达式捕获项目符号标签 '(a)' '(b)' '(c)' '(d)' 。 ( ..etc...) 出现在“MyElement”中,其文本以“SECTIONBEGINS”开头。
我需要这个正则表达式来忽略出现在我的 XML-as-text 中其他地方的 (a) ... (b) ... (c) 的任何其他实例。
如果我使用:
(\([a-z]\))
我在整个文档中匹配 (a)、(b)、(c)。那个表情太放纵了。
如果我使用:
>SECTIONBEGINS(?:.*?)(\([a-z]\))(?:.*)<
我只在正确的部分内成功匹配,但我只匹配“(a)”(第一个命中),而不是同一部分的 (b)、(c)、(d)。
而且我尝试了很多其他变体,其中一些变体会选择“(d)”,但似乎没有一个能捕获超过一次的命中。
请您参考如下方法:
变体 1:向后看
(?<=SECTIONBEGINS[^>]*)\([a-z]\)
变体 2:\G anchor + 捕获组
(?:SECTIONBEGINS|\G)[^<(]*(\([a-z]\))
