S: Regular Expression

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/s_regular_expression_160166/page_1 - zur Vollversion wechseln!


DJ_Cyberdance schrieb am 15.03.2006 um 11:36

Vielleicht hat ja jemand von euch mehr Ahnung von regulären Ausdrücken als ich? Ich suche einen regulären Ausdruck (C-Syntax), der Strings matcht. Mein Versuch dazu:

\".*\"

Funktioniert - allerdings wenn ich das nun darauf anwende:

foo1 "bar1" foo2 "bar2"

dann erhalte ich

"bar1" foo2 "bar2"

als Ergebnis. Nächster Schritt:

\"[^\"]*\"

Nun matcht das in obigem Beispiel richtigerweise "bar1" und "bar2". Nun mein Problem: Strings können aber auch Anführungszeichen enthalten - die sind dann mit \ escaped und sollen Teil des Strings sein. Das heißt, wenn ich den gesuchten regulären Ausdruck auf

foo "bar1\"bar2\"" foo "bar3"

anwende, möcht ich als Ergebnis "bar1\"bar2\"" bzw "bar3" haben. Wie geht das? Probier schon ewig rum, kriegs aber einfach nicht hin. Hat jemand eine Idee?


COLOSSUS schrieb am 15.03.2006 um 13:30

Mit Lookbehinds moeglich, z. B.

Code:
echo 'foo "bar1\"bar2\"bar" foo "bar3"' | perl -n -e '@match = /(?<!\\)"(.*?)(?<!\\)"/g; print @match' 


Spikx schrieb am 15.03.2006 um 15:14

Ich weiß zwar nicht wie sehr sich flex von lex unterscheidet, aber im flex manual is unter punkt '0.11 Start conditions' ein Beispiel um quoted strings zu matchen.


DJ_Cyberdance schrieb am 16.03.2006 um 00:02

Danke für die Tips! Ich glaub jetzt tuts...




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025