2017-03-15 7 views
2

Ich möchte Räume entfernen zwischen führenden > Zeichen mit regex:Regex entfernen Räume zwischen Zeichen

preg_replace('!^>(?: +)>!m', '>>', $text); 

, die nicht mit funktioniert

> > > Hello 

Ich möchte es so verhalten:

> >> Hello 
> > > Hello 
>>Hello > > 
>>> Hello 
> >>  Hello 

sollte

werden
>>> Hello 
>>> Hello 
>> Hello > > 
>>> Hello 
>>>  Hello 

aber die zweite > wird bereits verwendet, um mit den ersten beiden Zeichen übereinzustimmen.

sehen: https://regex101.com/r/4uiyWG/1

+0

Haben Sie Multiline-Saiten im wirklichen Leben? Versuchen Sie ['preg_replace ('~ (?: \ G | ^) \ h *> \ h * ~ m', '>', $ s)'] (https://regex101.com/r/irTfl4/1) . –

+0

Nur um klar zu stellen: ''>>> Hallo>> Mehr Text'' sollte in' '>>> Hallo>> Mehr Text' umgewandelt werden, richtig? Oder '' >>> Hallo >> Mehr Text''? –

Antwort

1

Wenn Sie Ersatz auf separaten Strings ausführen, verwenden

$s = preg_replace('~\G\h*>~', '>', $s); 

Siehe regex demo

Der \G Operator den Beginn der Zeichenfolge übereinstimmt oder das Ende des vorhergehenden erfolgreichen Spiel . \h* entspricht keinem oder mehreren horizontalen Whitesymbolen.

Wenn Sie möchten, verwenden Sie

$s = preg_replace('~(?:\G|^)\h*>~m', '>', $s) 

Siehe this regex demo

Hier (?:\G|^) Wechsel ist seit \G notwendig, zwischen führenden > auf jede Zeile des Eingangs in Raum, um loszuwerden (auch mit Der Modifikator /m stimmt nicht mit dem Anfang einer Zeile überein.

+0

das funktioniert ziemlich gut, habe ich tatsächlich '(?: \ G | ^) \ h *>' weil ich ein Leerzeichen nach der Gruppe von '>' wollen. Aber ich muss immer noch geigen, wie man den Raum bekommt, wenn er nicht da ist. Ich habe die Frage aktualisiert – Asara

+0

Funktioniert es nicht wirklich? Siehe [diese Demo] (https://regex101.com/r/O5nVv8/3). –

+0

Ich sagte, es funktioniert :), aber ich habe in meiner Frage vor 8 vergessen und aktualisiert es jetzt), dass ich auch ein Leerzeichen nach dem '>' hinzufügen müssen, wenn es keine gibt. Wenn es mehr als einen Platz gibt, ist es in Ordnung. Ich versuche nur, es selbst auszuprobieren, würde mich aber über Hilfe freuen. – Asara

Verwandte Themen