Ich bin auf der Suche nach einem Suchmuster. Es gibt ein bestimmtes Muster, dem in einem anderen Muster nicht gefolgt werden sollte. Irgendwie, wenn dieses Muster vorhanden ist, sollten <
und >
Zeichen von Escape \
Zeichen gefolgt werden. Die Zeichen können vorhanden sein, wenn sie nicht im Muster enthalten sind.Regex: ein Zeichen sollte vorhanden sein, gefolgt von einem weiteren Escape-Zeichen
Ich habe versucht, es auf diese Weise tun: input_string = '<First tag:<Second tag:hello>tag ends>' re.findall('(?<!\\)<.*?:.*?(?<!\\)>',input_string)
Erwartete Ausgabe: ['<Second tag:hello>']
Was ich habe ist: ['<First tag:<Second tag:hello>']
ich mit diesem Muster versucht: (?<!\\)<[^(?<!\\)<.*:]+:[^(?<!\\)<.*:]+?(?<!\\)>
Dies geht das obige Beispiel , aber für diesen Eingang: input_str = '<First tag:\<Second tag:hello>tag ends> <First tag:<Second tag:hello\>tag ends> <First tag:\<Second tag:hello\>tag ends>'
schlägt es fehl.
Dies ist die erwartete Ausgabe: ['<First tag:\<Second tag:hello>','<Second tag:hello\>tag ends>','<First tag:\<Second tag:hello\>tag ends>']
nicht regex verwendet alles mit unendlicher Verschachtelung zu analysieren. Es wird nicht funktionieren. –
Sie wollen also die innerste nicht-maskierte '<' to '>'? Das sollte mit Regex machbar sein. – TemporalWolf
@TemporalWolf Ja, genau .. mit einem ':' dazwischen '<' and '>' – Sohn