615 Stimmen

Regex: Abgleich bis zum ersten Vorkommen eines Zeichens

Ich suche nach einem Muster, das zu allem passt bis das erste Vorkommen eines bestimmten Zeichens, z. B. eines ";" - ein Semikolon .

Ich habe dies geschrieben:

/^(.*);/

Aber es passt tatsächlich alles (einschließlich des Semikolons) bis zum letzten Vorkommen eines Semikolons.

112 Stimmen

/^(.*?);/ sollte auch funktionieren (es heißt nicht gierig ), aber die gegebenen Antworten mit [^;]* sind besser.

0 Stimmen

Wie würden Sie alles nach dem Semikolon und nicht das Semikolon selbst auswählen?

0 Stimmen

Siehe diese Arbeiten \w+(?!([^]+;)|;) aber dies nicht, warum? .+(?!([^]+;)|;)

3voto

sPooKee Punkte 31

"/^([^\/]*)\/$/" hat bei mir funktioniert, um nur die obersten "Ordner" aus einem Array zu erhalten:

a/   <- this
a/b/
c/   <- this
c/d/
/d/e/
f/   <- this

2voto

L1amm Punkte 47

Es ist wirklich traurig, dass Ihnen niemand die richtige Antwort gegeben hat....

In regex, ? macht es nicht gierig. Standardmäßig passt regex so viel wie möglich (gierig)

Fügen Sie einfach ein ? hinzu, und es wird nicht gierig sein und so wenig wie möglich übereinstimmen!

Viel Glück, ich hoffe, das hilft.

4 Stimmen

Dies hängt stark von der aktuellen Regex ab Umsetzung und nicht jede Implementierung verfügt über den Non-Greedy-Modus.

2voto

Stranger Punkte 9605

Dies funktioniert, um den Inhalt vom Anfang einer Zeile bis zum ersten Wort zu erhalten,

/^.*?([^\s]+)/gm

0voto

akshaay Punkte 1

Ich hatte ein ähnliches Problem, bei dem alle Zeichen bis zum ersten Komma nach dem Wort entity_id . Die Lösung, die funktionierte, war dies in Bigquery:

SELECT regexp_extract(line_items,r'entity_id*[^,]*')

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X