Pregunta

Así que no había hecho ningún expresiones regulares durante un tiempo, por lo que pensé en poner al día mi memoria. Estoy tratando de convertir una cadena como a*b*c en a<b>b</b>c. Ya he recibido ese trabajo, pero ahora quiero seguir una cadena como a\*b\*c se convierta en a\<b>b\</b>c, sino más bien, en a*b*c. Aquí está el código que estoy utilizando ahora:

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

He intentado poner esta \\\\{0} antes de los asteriscos, y que no funcionó. Tampoco [^\\\\].

¿Fue útil?

Solución

Trate de búsqueda hacia atrás negativo:

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

Esto sólo coincide con un * si no está precedido por un \.

Este es frágil, sin embargo; También sería un error si la cadena es escaped backslash \\*bold* text.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top