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

Regex to match consecutive tags ignoring text between them

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

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

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

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

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

<pronouns>Hello</pronouns><pronouns>Hi</pronouns><pronouns>Hi</pronouns><verbs>Ok</verbs><determiners>the</determiners><noun>people</noun>

如果您使用 Previous Regex,上述匹配将失败。

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

如前所述 - 这不是 crystal 清楚...但是如果我理解正确的话你想要匹配如果有两对连续的 pronoun-标签,无论如何他们的文字内容是。

如果正确,你可以试试

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

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

Check it out here at regex101.