我不明白如何进入第二场比赛<sub>aaaa</sub>
而不是<sub>eeee</sub>
我的正则表达式:
<item>.*?<sub>(.*?)<\/sub>.*?<value>(.*?)<\/value>.*?<\/item>
含量:
<item> fffffffffffff
<sub>aaaa</sub>
<value>111</value>
</item>
<item>
<sub>eeee</sub> arg34ddddddddddddddd
<atag>ddd</atag>
<sub>aaaa</sub>
<atag>dddg</atag>
<value>222</value>
</item>
我可以一步到位,还是需要多次运行正则表达式?
更新
我想得到这样的结果:
[['aaaa',111],['aaaa',222]]
有可能吗?
答案 0 :(得分:-1)
尝试
<item>[\s\S]*?<sub>(.*?)<\/sub>((?!<sub>)[\s\S])*<\/item>
这只需要您在项目之间的最后sub
。
说明:
<item>[\s\S]*?<sub>
在item
和sub tags
<sub>(.*?)<\/sub>
匹配sub
代码并捕获其内容((?!<sub>)[\s\S])*<\/item>
使用Tempered Greedy Token确保在之前匹配的sub
之后,在结束sub
标记之前不再有item
个标记