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

È stato utile?

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