我很惊讶我无法找到这个,所以如果有人只是把它作为副本关闭,并指出我正确的方向,这是伟大的但是
我有xml,有时文本节点很简单,即
<text>Sometext</text>
有时很复杂
<text in_force_from="20061231" newpara="N">
<changed-by in_force_from="20140101">PRA 2013/34</changed-by>
<changed-by in_force_from="20061231">2006/40</changed-by>
This section applies to:
</text>
我想匹配所有简单的(例如<text>Sometext</text>
),所以这样的事情
<text [\S\s]*?>[^<]*?</text>
或者
<text [\S\s]*?>(?!<)*</text>
但它导致记事本++陷入停顿。我怀疑它已越过节点并尝试匹配下一个文本结束标记,即使这是5000行并且不是该节点的一部分。
我想要它做的是
这是造成问题的第四步。有任何想法吗?在正则表达式中这甚至可能吗?我错过了一些明显的东西吗?
答案 0 :(得分:2)
请勿尝试使用正则表达式执行此操作。你会弄错的。这不仅仅是因为它很难,而且因为它在理论上是不可能的。正则表达式只能用于处理一类称为常规语言的语言,而XML在这种意义上不是常规语言。
作业的工具是XPath,你需要的表达式是// text [not(*)]。
答案 1 :(得分:0)