【发布时间】:2011-05-23 00:00:08
【问题描述】:
这里是示例文本(从原文简化):
<start1>
<name="4654">
bla bla bla bla
<tags="bla" model="c">
bla bla bla bla
<start2>
<name="12346">
bla bla bla bla
<tags="bla" model="d">
bla bla bla bla
<start3>
<name="73535">
bla bla bla bla
<tags="bla" model="c">
<start4>
<name="546875">
bla bla bla bla
<tags="bla" model="c">
bla bla bla bla
这是我的正则表达式(点匹配换行选项已打开)
name="([\d]+)".+?(?<!start)tags="([^"]+?)" model="c"
如您所见,有 4 个块,但我需要将它们与 model="c" 匹配。但是.+? 捕获的内容超出了它的需要。将负面的向后看以抑制它不起作用......知道如何排除块吗?
更新(澄清我想要实现的目标):
样本数据中我想匹配以下 3 个块:
第一场比赛
<name="4654">
bla bla bla bla
<tags="bla" model="c">
第二场比赛
<name="73535">
bla bla bla bla
<tags="bla" model="c">
第三场比赛
<name="546875">
bla bla bla bla
<tags="bla" model="c">
【问题讨论】:
-
如果是XML,最好使用XPath。
-
这看起来不像 XML。这是更糟糕的事情。 :)
-
不是。我刚刚使用 xml 元素来简化示例数据。
-
你能解释一下正则表达式应该做什么吗?应该捕获多少?查看非功能性正则表达式并不能让我们了解您希望实现的目标。
-
@Mike Pennington:当然,更新了。谢谢!