正则表达式匹配连续标签,忽略它们之间的文本

时间:2016-09-09 10:37:13

标签: regex regex-negation regex-greedy

我有一个词性的自定义标签。我想检查它们是否是连续的。 我的字符串是

 <pronouns></pronouns><pronouns></pronouns><verbs></verbs><determiners></determiners><noun></noun>

EG。如果我使用这个正则表达式(<pronouns><\/pronouns>)\1{1},它会连续给我两个代词标签

**<pronouns></pronouns><pronouns></pronouns>**<verbs></verbs><determiners></determiners><noun></noun>

如果我使用此正则表达式(<pronouns><\/pronouns><verb><\/verb>)\1{0} 它给了我一个代词和动词标签,如果我把它修改为(<pronouns><\/pronouns><verb><\/verb>)\1{1},它会给我两个连续出现的代词和动词标签。 问题是,如果标签之间有任何文本,如果连续

则无法匹配
<pronouns>Hello</pronouns><pronouns>Hi</pronouns><pronouns>Hi</pronouns><verbs>Ok</verbs><determiners>the</determiners><noun>people</noun>
如果您使用Previous Regex,则

匹配失败。

如何将正则表达式与文本与先前条件匹配,并获取在连续标记标记之间捕获的文本。

1 个答案:

答案 0 :(得分:0)

如前所述 - 这不是很清楚...但如果我理解正确,你想要匹配,如果有两对连续的pronoun - 标签,无论它们的文字内容是什么。< / p>

如果这是正确的,你可以尝试

(?:<(pronouns)>.*?<\/\1>){2}

它匹配第一个pronoun - 标记,捕获名称。然后它匹配任何文本到结束标记。匹配,然后再次重复相同的模式。

Check it out here at regex101