@Mark Wenn dies das ist, was Sie brauchten (obwohl diese Frage alt ist!), Markieren Sie dies bitte als Antwort.
Pieter VDE
5
@ Dreamonic Glaube nicht, dass es passiert :(
Starkers
4
@Starker Du hast recht. Es wird nicht passieren. Mark war seitdem nicht mehr dabei Feb 5 '11 at 10:41. Es ist immer noch gut, auf jede Veränderung hinzuweisen, die wir bekommen. Vielleicht lernt jemand von Dreamonic, der darauf hinweist.
DutGRIFF
1
Wie würden Sie den Inhalt nach dem letzten Fragezeichen erfassen? Ich möchte danach "verankern" - ich bin mir nicht sicher, ob Anker das richtige Wort ist.
BKSpurgeon
2
@ BKSpurgeon erste Capture-Gruppe in ^. * \? ([^?] *) $
Sollte
61
Versuche dies:
\?(.*)
Die Klammern sind eine Erfassungsgruppe, mit der Sie den Teil der Zeichenfolge extrahieren können, an dem Sie interessiert sind.
Wenn die Zeichenfolge neue Zeilen enthalten kann, müssen Sie möglicherweise den Modifikator "Punkt alle" verwenden, damit der Punkt mit dem neuen Zeilenzeichen übereinstimmt. Ob und wie Sie dies tun müssen oder nicht, hängt von der verwendeten Sprache ab. Anscheinend haben Sie vergessen, die Programmiersprache zu erwähnen, die Sie in Ihrer Frage verwenden.
Eine andere Alternative, die Sie verwenden können, wenn Ihre Sprache Lookbehind-Behauptungen mit fester Breite unterstützt, ist:
Oh die feste Breite? Kann ich nach so etwas suchen? Themen: Code, Programmierung, Design Ich möchte also den Doppelpunkt auswählen und bis zum Ende der Zeile und bis zum Ende der Zeile nach hinten schauen. (in diesem Fall Ende der Leitung ist „Design“.
Mark
@ Mark: Welche Sprache benutzt du?
Mark Byers
Ich verwende Yahoo Pipes, das Regex ausschließt. Ich habe diese Frage beantwortet bekommen und suche nun nach einem regulären Ausdruck, der 6 Zeichen hinter einem Doppelpunkt und ebenso viele (alle) vorwärts auswählt.
Mark
@ Mark: Ich habe Ihre Liste mit Fragen überprüft, aber ich sehe Ihre neue nicht. Bist du sicher, dass du es gepostet hast?
Mark Byers
Ich werde diese neue Frage in wenigen Augenblicken noch einmal stellen. Ich denke, es ist am besten, meine Fragen getrennt zu halten und eigentlich beide gleichzeitig zu stellen. Danke
Mark
36
Mit der positiven Lookbehind- Technik:
(?<=\?).*
(Wir suchen hier nach einem Text, dem ein Fragezeichen vorangestellt ist.)
Grundsätzlich ?<=handelt es sich um ein Gruppenkonstrukt, für das das maskierte Fragezeichen erforderlich ist , bevor eine Übereinstimmung hergestellt werden kann.
Sie arbeiten sehr gut, aber nicht alle Implementierungen unterstützen sie.
Wenn Sie alle Zeichen nach "?" Sie können eine Gruppe verwenden, um mit jedem Zeichen übereinzustimmen, und Sie sollten das "$" -Zeichen verwenden, um das Zeilenende anzugeben.
In den meisten Implementierungen mit regulären Ausdrücken .stimmt das standardmäßig nicht mit dem neuen Zeilenzeichen überein. Infolgedessen würde es auch ohne das Zeilenendezeichen im Ausdruck bis zum Zeilenende übereinstimmen.
Mark Byers
2
Schauen Sie sich diese Site an: http://rubular.com/ Grundsätzlich können Sie auf der Site einen Beispieltext eingeben (wonach Sie auf Ihrer Site suchen würden). Wenn Sie dann den regulären Ausdruck erstellen, wird hervorgehoben, was übereinstimmt Echtzeit.
Dies ist manchmal schlecht zu verwenden, wenn Sie auswählen möchten, was zwischen "" entfernt werden soll, und Sie es nicht mehr als zweimal in einer Zeichenfolge verwenden können. Alles, was es tut, ist auszuwählen, was nicht zwischen "" liegt, und es durch nichts zu ersetzen.
Selbst für mich ist es ein bisschen verwirrend, aber ich versuche es nicht zu erklären. ^.+?(nichts OPTIONALES) bis zuerst "dann |oder / stop (immer noch recherchierend, was es wirklich bedeutet) bis / at ^.bis vor der 2. "Verwendung ( |stop / at) nichts ausgewählt hat . Und wählen Sie alles aus, was danach kommt. +.
\?.*
stimmt mit allem überein (einschließlich einer leeren Zeichenfolge)?
."\\?"
Antworten:
Sie möchten den Inhalt der ersten Erfassungsgruppe.
quelle
Feb 5 '11 at 10:41
. Es ist immer noch gut, auf jede Veränderung hinzuweisen, die wir bekommen. Vielleicht lernt jemand von Dreamonic, der darauf hinweist.Versuche dies:
Die Klammern sind eine Erfassungsgruppe, mit der Sie den Teil der Zeichenfolge extrahieren können, an dem Sie interessiert sind.
Wenn die Zeichenfolge neue Zeilen enthalten kann, müssen Sie möglicherweise den Modifikator "Punkt alle" verwenden, damit der Punkt mit dem neuen Zeilenzeichen übereinstimmt. Ob und wie Sie dies tun müssen oder nicht, hängt von der verwendeten Sprache ab. Anscheinend haben Sie vergessen, die Programmiersprache zu erwähnen, die Sie in Ihrer Frage verwenden.
Eine andere Alternative, die Sie verwenden können, wenn Ihre Sprache Lookbehind-Behauptungen mit fester Breite unterstützt, ist:
quelle
Mit der positiven Lookbehind- Technik:
(?<=\?).*
(Wir suchen hier nach einem Text, dem ein Fragezeichen vorangestellt ist.)
Beispiel
Grundsätzlich
?<=
handelt es sich um ein Gruppenkonstrukt, für das das maskierte Fragezeichen erforderlich ist , bevor eine Übereinstimmung hergestellt werden kann.Sie arbeiten sehr gut, aber nicht alle Implementierungen unterstützen sie.
quelle
Wenn Sie alle Zeichen nach "?" Sie können eine Gruppe verwenden, um mit jedem Zeichen übereinzustimmen, und Sie sollten das "$" -Zeichen verwenden, um das Zeilenende anzugeben.
quelle
.
stimmt das standardmäßig nicht mit dem neuen Zeilenzeichen überein. Infolgedessen würde es auch ohne das Zeilenendezeichen im Ausdruck bis zum Zeilenende übereinstimmen.Schauen Sie sich diese Site an: http://rubular.com/ Grundsätzlich können Sie auf der Site einen Beispieltext eingeben (wonach Sie auf Ihrer Site suchen würden). Wenn Sie dann den regulären Ausdruck erstellen, wird hervorgehoben, was übereinstimmt Echtzeit.
quelle
/([a-zA-Z]{4}):/
wird passenTest: Welcome
und greifenTest
str.replace(/^.+?\"|^.|\".+/, '');
Dies ist manchmal schlecht zu verwenden, wenn Sie auswählen möchten, was zwischen "" entfernt werden soll, und Sie es nicht mehr als zweimal in einer Zeichenfolge verwenden können. Alles, was es tut, ist auszuwählen, was nicht zwischen "" liegt, und es durch nichts zu ersetzen.
Selbst für mich ist es ein bisschen verwirrend, aber ich versuche es nicht zu erklären.
^.+?
(nichts OPTIONALES) bis zuerst"
dann|
oder / stop (immer noch recherchierend, was es wirklich bedeutet) bis / at^.
bis vor der 2."
Verwendung (|
stop / at) nichts ausgewählt hat . Und wählen Sie alles aus, was danach kommt. +.quelle