题
所以我没有做任何正则表达式了一段时间,所以我想我刷了我的记忆。我试图将字符串转换像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