Pergunta

Então, eu não tinha feito nenhum regexps há um tempo, então pensei em aprimorar minha memória. Estou tentando converter uma string como a*b*c em a<b>b</b>c. Eu já consegui funcionar, mas agora quero manter uma corda como a\*b\*c de se transformar em a\<b>b\</b>c, mas sim em a*b*c. Aqui está o código que estou usando agora:

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

Eu tentei colocar isso \\\\{0} Antes dos asteriscos, e isso não funcionou. Nem [^\\\\].

Foi útil?

Solução

Experimente o visual negativo:

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

Isso só corresponde a um * Se não for precedido por um \.

Isso é quebradiço, no entanto; também falharia se a string for escaped backslash \\*bold* text.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top