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 [^\\\\].

War es hilfreich?

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
scroll top