2017-02-02 4 views
0

Ich möchte prüfen, ob vor dem Bindestrich (-) ein Zeichen steht.Überprüfen Sie, ob etwas vor dem Zeichen steht. Php

Wenn es dann etwas <br>-

hinzufügen Wenn es nur Platz vorhanden ist, nichts zu tun. Ich bin nicht gut mit Regexes :(

+0

zeigen vorangestellt ist uns die schlechte Regex, die Sie –

+2

Sie haben müssen auf die Frage hinzuzufügen, was, wenn überhaupt, Sie versucht haben. – Ale

+0

$ newstr = preg_replace ('/-\./ s', '
-', "Dies ist eine Zeile - das ist die zweite"); Dies ist, was ich versucht habe, aber ich denke, etwas muss vor Bindestrich in Regex sein –

Antwort

0

habe ich schlecht am Anfang meiner Karriere Codierung mit regex sein, aber nur die Zeit nehmen, es zu studieren.

Das Muster Sie suchen, ist sehr einfach : ([^\s])(-)

Hier können Sie mit ihr testen: http://regexr.com/3f73e

[^\s] bedeutet alle Zeichen übereinstimmen, die kein Leerzeichen ist (\s bedeutet Leerzeichen)

.

- entspricht dem Bindestrich

() bedeutet eine Erfassungsgruppe. Capture-Gruppe 1 erfasst also den Charakter vor dem Bindestrich und Capture-Gruppe 2 erfasst den Bindestrich. Dies ist wichtig für den Austausch, da Sie die Erfassungsgruppe 1 beibehalten möchten.

2

Die Lösung preg_replace Funktion und spezifische RegexMuster verwendet:

$str = "The couch said: 'Use one-two-three combination'. -a) But it wasn't about boxing, it was about ping-pong"; 
$new_str = preg_replace("/(?<=\S)-/", "<br>-", $str); 

print_r($new_str); 

der Ausgang (als view-Quelle code):

The couch said: 'Use one<br>-two<br>-three combination'. -a) But it wasn't about boxing, it was about ping<br>-pong 

\S - zeigt auf das kein Leerzeichen Zeichen

(?<=\S) - positive assetion Lookbehind, stellt sicher, dass ein Bindestrich durch ein Zeichen

Verwandte Themen