2017-01-22 4 views
0

Wie erfassen Sie ein Ausrufezeichen ! vor " und (, jedoch nicht in zwei doppelte Anführungszeichen "?Capture-Ausrufezeichen vor "und (aber nicht in‚‘(RegEx)

Vor prerequisity ist in Ordnung, aber letztere Teil, das Ausrufezeichen nicht innerhalb verdoppelt Anführungszeichen gesetzt werden, sollte hinzugefügt werden:

\s*([\!])\s*(")|\s*([\!])\s*(\() 

Bei Eingabe: (! "A" ! (!"B" "C" " ! ("))

Erwartete Ausgabe: (! "A" ! (! "B" "C" " ! ("))

http://www.regexr.com/3f495

Antwort

1

wenn ich verstehe, Sie zu korrigieren, so dass Sie genau ein Raum um Ausrufezeichen außerhalb von Zitaten haben wollen.

diese regex die Arbeit machen sollte:

\G[^"]*?\K(?:\s*!\s*(?=["(]))([^"!]*(?:"[^"]*")?) 

Sie hier eine Erklärung der Regex finden:

Regular expression visualization

Debuggex Demo

und für substituion Sie einen Blick darauf werfen können hier: https://regex101.com/r/dzwTUp/1

+0

regex101 Beispiel funktioniert wie erwartet, ich bin nicht sicher über Debuggex, wie es funktionieren sollte, aber es hat eine sehr schöne Schnittstelle für Regex-Programmierer! – MarkokraM

+0

@MarkokraM ja, genau für die gute Schnittstelle ... momentan scheint der Bildgenerator aus irgendwelchen Gründen kaputt zu sein – bukart

Verwandte Themen