当第一次选择在第二个选择范围内时,如何使用正则表达式匹配两个选择

时间:2016-05-26 09:49:56

标签: regex

我正试图让我的Reg Exp(pcre风味)的一部分工作。

这是HTML结构。我想选择ChildA和ChildB。 (即Match1:从Parent到ChildA;以及Match2:从Parent到ChildB)。

<Parent>
            <ChildA>..</ChildA>
            <ChildB>..</ChildB>

我试过

/<parent>(.|\n)*?<child(a|b)>/gmi

我尝试使用和不使用问号。它选择最多ChildA或ChildB,但不能同时选择两者。

有人可以指导我吗?

Here's a fiddle

以下是我想要获得的比赛(根据PetrSrníček的要求澄清):

匹配1:

<Parent>
            <ChildA>

比赛2:

<Parent>
            <ChildA>..</ChildA>
            <ChildB>

1 个答案:

答案 0 :(得分:1)

这可能会满足您的需求:

StringBuilder

注意,我已添加了/(<parent>.*?<child[ab]>).*?<child[ab]>/gmis 修饰符,并已从s更改为(a|b),以避免不必要的捕获组。

请参阅https://regex101.com/r/eL2sO6/2

另请注意,match1符合您的要求。你的match2将是整场比赛。如果您明确希望它是一个子匹配,请在所有内容中添加括号。