Eine Frage zu Regex. Ich habe folgende Muster, die ich passen will:Regex Python, Match alles zwischen A und B, es sei denn C
A()()()(B) MATCH
A()()(B) MATCH
A()(B) MATCH
A(B) MATCH
auch, wenn etwas in den Klammern neben dem Ausdruck (NEIN) ist auch das sollte dann passen:
A(abc)(B) MATCH
A()(def)(B) MATCH
A()()(ghij)(B) MATCH
A(klmn)(opq)()(B) MATCH
A(NO)(B) NO MATCH
A()()(NO)(B) NO MATCH
A(abc)(NO)(B) NO MATCH
aber ich will nicht der Begriff übereinstimmen, wenn es etwas ist, das nicht in den Klammern ist:
Aabc(B) NO MATCH
A()defg()(B) NO MATCH
ich habe folgende:
A\(.*\)*(?<!\(NO\))\(B\)
BITTE HILFE!
Was passiert, wenn eine Klammer in den Klammern ist da? Können Klammern verschachtelt werden? Was ist, wenn neben "NO" noch andere Dinge in Klammern stehen? –
Klammern in Klammern sind in Ordnung, solange nichts außerhalb der Klammern ist. ((fdsffds) dfdsfs) ist in Ordnung. Das (NO) ist in Ordnung, wenn es in einer geschachtelten Klammer wie (dsasad (NO)) ist, aber es ist nicht gut zu haben (NO (dsadwsa)) – ben
Benötigen Sie eine vollständig 1 Regex-basierte Lösung? Wenn Sie keine Rekursion benötigen, können Sie eine einfache 're' Regex verwenden: ['^ A (\ ((?! NO \)) [^()] * \)) + $'] (https: // regex101 .com/r/nS3hN4/1). –