我试图捕捉两个最接近的短语之间的文本,包括那些短语,但是消极的前瞻在我的情况下似乎不起作用。你知道吗
这是文本文件的一部分:
<in><il>plural</il> <if>aba*cus*es</if> <il>also</il> <if>aba*ci</if> <sound><wav>abaci001.wav</wav><wav>abaci002.wav</wav></sound> <pr>-ˌsaɪ</pr> <altpr>ˈæbəˌsaɪ</altpr></in>
<in><il>plural</il> <if>fau*nas</if> <il>also</il> <if>fau*nae</if> <sound><wav>fauna002.wav</wav></sound> <pr>ˈfɑ:ˌni:</pr></in>
<il>or</il> <if>fur*ther</if> <sound><wav>far00003.wav</wav></sound> <in><if>far*thest</if> <sound><wav>farthe03.wav</wav></sound>
我需要捕获每一对<if>...</if>
和<wav>...</wav>
标记。你知道吗
我的正则表达式是:<if>.*?<\/if>(?:(?!<if>.*?<\/if>).)*?<wav>.*?<\/wav>
Regex101示例:https://regex101.com/r/eT4wJ9/1
出于某种原因,如果有两个或两个以上的<if>...</if>
标记出现,那么这个正则表达式将匹配从第一个出现开始的所有内容,尽管前面是负数。为什么会这样?你知道吗
您还需要在if块中添加一个负的lookahead,这样它就不会匹配嵌套的
if
标记。你知道吗DEMO
示例:
相关问题 更多 >
编程相关推荐