PHP Regex No Barra rovesciata
Domanda
Quindi non aveva fatto alcun espressioni regolari per un po ', quindi ho pensato di rispolverare la mia memoria. Sto cercando di convertire una stringa come a*b*c
in a<b>b</b>c
. Ho già ottenuto che il lavoro, ma ora voglio mantenere una stringa come a\*b\*c
si trasformi in a\<b>b\</b>c
, ma piuttosto, in a*b*c
. Ecco il codice che sto usando ora:
$string = preg_replace("/\*([\s\S]*?)\*/", "<b>$1</b>", $input);
Ho provato a mettere questo \\\\{0}
prima gli asterischi, e che non ha funzionato. Nemmeno [^\\\\]
.
Soluzione
Prova lookbehind negativo:
"/(?<!\\\\)\*([\s\S]*?)(?<!\\\\)\*/"
Questo corrisponde a un *
se non è preceduta da un \
.
Questa è fragile, però; sarebbe anche fallire se la stringa è escaped backslash \\*bold* text
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow