PHP 正则表达式 没有反斜杠
所以我有一段时间没有做过任何正则表达式了,所以我想我应该温习一下我的记忆。我正在尝试将 a*b*c
这样的字符串转换为 abc
。我已经做到了这一点,但现在我想防止像 a\*b\*c
这样的字符串变成 a\b\ c
,而是转化为 a*b*c
。这是我现在使用的代码:
$string = preg_replace("/\*([\s\S]*?)\*/", "<b>$1</b>", $input);
我尝试将此 \\\\{0}
放在星号之前,但这不起作用。 [^\\\\]
也没有。
So I hadn't done any regexps for a while, so I thought I'd brush up on my memory. I'm trying to convert a string like a*b*c
into a<b>b</b>c
. I've already gotten that working, but now I want to keep a string like a\*b\*c
from turning into a\<b>b\</b>c
, but rather, into a*b*c
. Here's the code I'm using now:
$string = preg_replace("/\*([\s\S]*?)\*/", "<b>$1</b>", $input);
I've tried putting this \\\\{0}
in before the asterisks, and that didn't work. Neither did [^\\\\]
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试负向lookbehind:
如果
*
前面没有\
,则这只匹配它。不过,这很脆弱;如果字符串是转义反斜杠 \\*bold* 文本,它也会失败。
Try negative lookbehind:
This only matches a
*
if it's not preceded by a\
.This is brittle, though; it would also fail if the string is
escaped backslash \\*bold* text
.