PHP Regex Keine Aufkantung
Frage
hatte also ich keine regexps für eine Weile getan, so dass ich dachte, dass ich auf meinem Gedächtnis auffrischen würde. Ich versuche, eine Zeichenfolge wie a*b*c
in a<b>b</b>c
zu konvertieren. Ich habe schon, dass die Arbeit bekommen, aber jetzt will ich vom Drehen in a\*b\*c
eine Zeichenfolge wie a\<b>b\</b>c
halten, sondern in a*b*c
. Hier ist der Code, den ich jetzt mit:
$string = preg_replace("/\*([\s\S]*?)\*/", "<b>$1</b>", $input);
Ich habe versucht, bevor die Sterne dieses \\\\{0}
bei der Umsetzung, und das hat nicht funktioniert. Ebenso wenig wie [^\\\\]
.
Lösung
Versuchen negative Lookbehind:
"/(?<!\\\\)\*([\s\S]*?)(?<!\\\\)\*/"
Das paßt nur ein *
, wenn es nicht von einem \
voraus ist.
Dies ist spröde, obwohl; es wäre auch fehl, wenn die Zeichenfolge escaped backslash \\*bold* text
ist.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow