PHP Regex без обратной косой черты - PullRequest
1 голос
/ 26 октября 2010

Так что я некоторое время не делал регулярных выражений, поэтому я решил освежить свою память.Я пытаюсь преобразовать строку типа a*b*c в a<b>b</b>c.Я уже получил эту работу, но теперь я хочу, чтобы строка типа a\*b\*c не превратилась в a\<b>b\</b>c, а скорее в a*b*c.Вот код, который я сейчас использую:

     $string = preg_replace("/\*([\s\S]*?)\*/", "<b>$1</b>", $input);

Я пытался вставить это \\\\{0} перед звездочками, но это не сработало.Ни один не сделал [^\\\\].

1 Ответ

2 голосов
/ 26 октября 2010

Попробуйте отрицательный взгляд:

"/(?<!\\\\)\*([\s\S]*?)(?<!\\\\)\*/"

Это соответствует *, только если ему не предшествует \.

Это хрупко, хотя; это также не удастся, если строка будет escaped backslash \\*bold* text.

...