регулярное выражение findall шаблон, который не содержит другого шаблона - 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)

Это проходит в первом примере ввода, но не работает во втором. Любое предложение будет оценено :)


person Sohn    schedule 06.07.2016    source источник


Ответы (1)


Если вы хотите совпадение: <First tag:Some text<Second tagText for second tag>

вы можете попробовать: \<[^\<.*:\>]+:[^.*:\>]+\>. Это заполнит два примера.

подробности см. на странице https://regex101.com/r/nU6nO8/4.

person Bob    schedule 06.07.2016
comment
регулярное выражение может быть таким простым, как <[^<:>]+:[^:>]+> - person rock321987; 06.07.2016