2017-01-16 2 views
0

Ich habe die folgende Zeichenfolge:Regex verhindern, dass eine verschachtelte Übereinstimmung gefunden wird?

"hello x { x {} } world" 

Ich mag das erste Paar passen, aber nicht die zweite Gruppe. Regex sollte Folgendes ausgeben: "x {x {}}", aber stattdessen gibt es das x {} aus, das sich im Inneren befindet.

Kann ich es so machen, dass Regex nur die Eltern erfasst und nie die Kinder?

Eine einfache Überprüfung wie folgt:/x {}/g tut nicht. Es ist offensichtlich, warum, aber ich bin nicht sicher, welche Technik verwendet werden kann, um dies zu umgehen.

+0

Während Es könnte möglich sein, dass Sie dies mit einer Änderung der Regex (Idunno) tun könnten, Ich könnte mir auch vorstellen, es zu reparieren, indem ich den Ziel-String auf eine andere Art und Weise durchlaufe, den ersten Such-Index ständig verfolge und ihn bis zum Ende eines Musters verschiebe, wenn eines gefunden wird. – Katana314

+0

Das Parsen einer Syntax, die Dinge wie das Verschachteln von Klammern oder Klammern beinhaltet, erfordert normalerweise einen leistungsfähigeren Parser als das, was mit regulären Ausdrücken erreicht werden kann. – Pointy

+0

Was sollte von "Hallo x {x {y {}} p {} zoo} world {wieder}" ausgegeben werden? – anubhava

Antwort

1

können Sie versuchen, die folgenden zu verwenden:

x\s*{.*} 

https://regex101.com/r/VAYwYt/1

+0

Sollten wir den Punktoperator verwenden oder so spezifisch wie möglich sein? Oder ist es nicht leistungsbezogen? – Asperger

+0

Aktualisiert die Antwort @Asperger – Maslo

+0

Akzeptiert. Beide arbeiten, aber dieses ist sauberer. Ich würde den Punkt jedoch nicht verwenden, sei so spezifisch wie möglich. Aber hey, das ist meiner Meinung nach:) – Asperger

1

Spezifisch für die Zeichenfolge war dies die einfachste kann ich generieren:

x {?.+} 

Referenz: https://regex101.com/r/aEpueW/2

+0

Wählen Sie als Antwort:) – Asperger

+0

Warum verwenden alle Leute (.) Ich dachte, es wäre ein Performance-Killer? – Asperger

+0

Sie können die entkommenen Tags weglassen \ – Asperger

Verwandte Themen