PHP Regex без обратной косания
Вопрос
Поэтому я некоторое время не сделал никаких регенсов, поэтому я подумал, что буду почистить мою память. Я пытаюсь преобразовать строку, как 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}
в перед звездочками, и это не сработало. Не сделал [^\\\\]
.
Решение
Попробуйте отрицательный взгляд:
"/(?<!\\\\)\*([\s\S]*?)(?<!\\\\)\*/"
Это только соответствует *
Если он не предшествует \
.
Это хрупко, хотя; Это также не удастся, если строка escaped backslash \\*bold* text
.
Не связан с StackOverflow