不包含其他模式的正则表达式查找模式 - Python

regex findall pattern that doesnt contain another pattern - Python

我试图从一个字符串中找到所有匹配的模式,但不包含与子字符串相同的模式。我需要做的是,找到匹配 <.:.> 的所有模式,在 ':'.

之后没有任何嵌套标签(相同模式)

这是输入字符串,

<First tag:Some text<Second tag:Text for second tag>Some other tag<Third tag:Text for third tag>Remaining text

预期输出,

['<Second tag:Text for second tag>','<Third tag:Text for third tag>']

再输入一个字符串,

<First tag:Some text<Second tagText for second tag>Some other tag<Third tag:Text for third tag>Remaining text

输出,

['<First tag:Some text<Second tagText for second tag>','<Third tag:Text for third tag>']

我这样试过

re.findall('\<[^\<.*:.*\>]+:[^\<.*:.*\>]+\>', input_string)

这通过了第一个示例输入,但在第二个示例输入中失败了。 任何建议将不胜感激:)

如果你想要匹配:<First tag:Some text<Second tagText for second tag>

你可以试试:\<[^\<.*:\>]+:[^.*:\>]+\>。 它将实现两个例子。

见: https://regex101.com/r/nU6nO8/4 了解详情。