2017-03-17 5 views
1

Ich habe diese regex: !^>{1} (.*)$!m aber ich möchte hier nur die zweite Zeile entsprechen:bekommen nur zweite Zeile mit regex

>> text1 
> text2 
> text3 

aber 3. Zeile auch wegen m hier abgestimmt ist. Wenn ich das Flag m entferne, wird nur der Anfang der Zeichenfolge und nicht der Anfang der Zeile angezeigt. $ scheint überhaupt nichts zu tun.

sehen: https://regex101.com/r/AKYO1f/1

+3

Entfernen Sie einfach die 'g' Flag https://regex101.com/r/AKYO1f/2 – Shafizadeh

Antwort

1

Wie @Shafizadeh sagte, gerade gefüllt werden Entfernen Sie die g Flagge. Dadurch kehrt es nach dem ersten Spiel zurück, anstatt ALLE Übereinstimmungen zu finden.

nur eine Erklärung, warum: Wenn Sie das mehrzeilige Flagge ^ und & Spiel der Anfang und Ende einer Zeile, aber wenn Sie die mehrzeilige Flagge der Anfang und das Ende des STRING als Ganzes die ^ und & Spiel entfernen.

0

Hoffnung, das wird funktionieren.

Regex: >{1,2}[\w\s]+\n\K\>[\s\w\d]+

Regex Demo

0

Ich glaube, Sie preg_match()

preg_match() gibt die Anzahl der Spiele Muster verwenden könnte. Das wird entweder 0 mal (keine Übereinstimmung) oder 1 mal sein, weil preg_match() die Suche nach der ersten Übereinstimmung beendet. preg_match_all() hingegen wird fortgesetzt, bis es das Ende des Subjekts erreicht. preg_match() gibt FALSE zurück, wenn ein Fehler aufgetreten ist.

Das dritte Argument für preg_match(), wird, wenn gegeben, dies bei RegEx in PHP: find the first matching string aus einer Antwort mit dem Spiel (n) innerhalb eines Arrays

Got

Verwandte Themen