用于匹配父节点和子节点的正则表达式



我想开发一个规则的表达式来匹配标签:

<claim-text>aaaaaaa
<claim-text>bbbbbbb</claim-text>
<claim-text>ccccccc</claim-text>
</claim-text>

我试过了

<claim-text>(.*)</claim-text>

但是,只有bbbbbbb和ccccccc可以匹配。我也可以得到一些帮助来覆盖aaaaa吗?

谢谢

对于任何深度的通用解决方案,您至少需要一个堆栈,该堆栈不适用于大多数正则表达式实现。但是,如果您知道结构将仅具有您指定的深度,则可以使用如下所示的内容:

<claim-text>([^<rn]*)

您可以在此处看到一个工作示例:https://regex101.com/r/kbDbwF/1

它将搜索您的开始标记,然后查找下一个开始或结束标记[^<]或下一个换行符[^rn]的任何内容。我将两个字符类组合成一个定义[^<rn]。但是,这不是通用解决方案!

在任何情况下都不要尝试使用正则表达式解析 HTML,除非您希望调用rite6 6 6Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn。

使用 HTML 解析库 有关执行此操作的一些方法,请参阅此页面。

最新更新