2017-07-10 2 views
-1

Ich möchte wissen, wie kann ich Zeichen ignorieren, die folgt ein bestimmtes Muster in einem Regex. Ich habe versucht, mit positiven Lookaheads, aber sie funktionieren nicht, da sie diese Zeichen für andere Spiele erhalten, während ich will, dass sie nur ... verworfen werden.Regex: ignorieren Zeichen, die folgen

Zum Beispiel kann ein Teil meiner regex ist: (?<DoubleQ>\"\".*?\"\")|(?<SingleQ>\".*?\") um einige „Schlüsselteile“ entsprechen dieser Zeichenfolge:

This is a ""sample text"" just for "testing purposes": not to be used anywhere else. 

Ich möchte die gesamte ""sample text"" erfassen, aber dann will ich "Extrakt" nur sample text und das gleiche mit testing purposes. Das heißt, ich möchte, dass die Gruppe mit ""sample text"" übereinstimmt, aber dann möchte ich das vollständige Match sample text sein. Ich teilweise, dass bei der Verwendung der \K Option erreicht:

(?<DoubleQ>\"\"\K.*?\"\")|(?<SingleQ>\"\K.*?\") 

, die die erste "" (oder ") aus dem vollen Spiel ignoriert aber berücksichtigt sie bei der Gruppe entsprechen. Wie kann ich folgende "" (") ignorieren?

Hinweis: positive Lookahead funktioniert nicht: Es ignoriert Zeichen aus den folgenden Übereinstimmungen, es enthält sie nur nicht in der aktuellen Übereinstimmung.

Vielen Dank.

+0

eine automatische Downvote bietet Gibt es oder es ist nur eine zufällige Person im Internet, die * nicht * nicht rechtfertigen ihre eigenen Downvotes? – LuxGiammi

Antwort

2

Ich hoffe, ich habe Ihre Fragen richtig beantwortet. Sie möchten also die ganze Zeichenfolge einschließlich der Anführungszeichen abgleichen, aber Sie möchten nur den Ausdruck ohne Anführungszeichen ersetzen/extrahieren, richtig?

Normalerweise können Sie die Regex replace Funktionalität zu extrahieren nur einen Teil des Spiels.

Dies ist der reguläre Ausdruck:

""?(.*?)""? 

Und dieser Ausdruck des ersetzen:

$1 
+0

Das ist gut ... Ich habe meine Regex geändert in '(? \" (. *?) \ "\") | (? \ "(. *?) \") '(Nur entfernt '? '), die jetzt wie erwartet funktioniert und zwei neue Erfassungsgruppen erstellt, aus denen ich Informationen extrahieren kann. Danke für deine Hilfe ;-) – LuxGiammi

+0

Gern geschehen :) – Alex

Verwandte Themen