oder (PERL) RegExp für Strings der \" überspringt gesucht
Ed X
- javascript
0 Achim Schrepfer0 Calocybe0 Bio0 Calocybe
0 Ed X
Hi,
Ich suche einen Regulären Ausdruck der mir aus einem Quellcode einen
String zurückliefert, als etwas was wie
print "Dies ist eine Textzeile";
dagegen hilft /".*"/
Wenn der Text aber so aussieht:
print "Dies ist "eine" Textzeile";
habe ich damit ein Problem!! Wie kann ich den RegExp überreden, die
<denglish>escapten quotes</denglish> zu ignorieren?
es muss nicht multilinefähig sein (da JAVA-Quellcode!)
bye eddie
Hi,
print "Dies ist eine Textzeile";
dagegen hilft /".*"/
du meinst, der Ausdruck trifft vom ersten, bis zum letzten Gänsefüsschen.
print "Dies ist "eine" Textzeile";
habe ich damit ein Problem!!
welches Problem. Der Ausdruck trifft doch immer noch. Wenn Du die Escape-Zeichen loswerden willst, kannst Du das doch mit einer zweiten Substitution machen.
Viele Grüsse,
Achim
Auch Hi!
print "Dies ist eine Textzeile";
dagegen hilft /".*"/
Wenn der Text aber so aussieht:
print "Dies ist "eine" Textzeile";
In Perl: Versuch mal
/(?<!\)".*(?<!\)"/ # "negative lookbehind assertion"
(untested)
Bringt aber auch noch nicht wirklich viel, weil ja der Backslash auch wieder escaped sein koennte, also "Dies ist \"eine\" Textzeile", da wuerde dieser Ausdruck trotzdem die " ignorieren. Vielleicht koennte man noch etwas rumspielen in Richtung
/(?<!\{1})".*(?<!\{1})"/
aber das ist schon ziemliche Spekulation, und spaetestens wenn jemand 3 \ vor dem " plaziert, sind wir raus.
In JS: AFAIK no chance mit regexp. Da muss man schon Zeichen fuer Zeichen durchgehen und selber interpretieren.
HTH && So long
Sup!
Ich denke, das koennte funktionieren:
w/"((?:\"|[^"])+)"/;
" -> Anfuehrungszeichen "
( ) Klammer, deren Treffer gemerkt werden
(?: )+ Klammer, deren "Treffer" nicht "gemerkt" werden sollen - der Ausdruck in der Klammer muss ein- oder mehrmals treffen
\" -> gequotetes Anfuerhungszeichen "
| ODER
[^"] -> Alle Zeichen, die KEIN Anfuehrungszeichen sind
Ich gehe bei dem Ausdruck davon aus, dass die " gequotet werden muessen - vielleicht muss man das doch nicht tun. Mal ausprobieren... ;-)
Der Ausdruck findet also alle Zeichenketten, die mit " anfangen, dann nur gequotete Anfuehrungszeichen oder Zeichen, die keine Anfuehrungszeichen sind, enthalten, und am Ende ein " haben. Dinge, die davor oder dahinter stehen, werden ignoriert.
Hoffentlicht funzt es ;-)
Gruesse,
Bio
Moin!
w/"((?:\"|[^"])+)"/;
Ich gehe bei dem Ausdruck davon aus, dass die " gequotet werden muessen - vielleicht muss man das doch nicht tun. Mal ausprobieren... ;-)
Muss man nicht. ;-)
Der Ausdruck findet also alle Zeichenketten, die mit " anfangen, dann nur gequotete Anfuehrungszeichen oder Zeichen, die keine Anfuehrungszeichen sind, enthalten, und am Ende ein " haben. Dinge, die davor oder dahinter stehen, werden ignoriert.
Ok, aber was ist mit "paragraph sign: \025" ?
So long
Hi, Leute.
Danke erst mal für die Antworten. Ich werde es wohl doch vorerst ohne
RegExp machen sondern mich zu Fuß durchfragen bis zum nächsten
gültigen quotation mark.
Wenn ich mal mehr Zeit habe werde ich die Regexps mal Probieren und
wenn ich die (hoffentlich perfekte) Lösung habe, erfahrt ihr es
natürlich sofort :-)
bye eddie