PHP中的正则表达式转义字符

PHP中的正则表达式转义字符,php,regex,Php,Regex,我有一个在regex101.com上运行的正则表达式 (?:[^\#\\S\\+]*) 它与第一个与第二个匹配 每当我尝试将我的正则表达式与PHP的preg_replace一起使用时,我都没有得到预期的结果 到目前为止,我通过preg_quote()进行了尝试: 并尝试使用转义原始\\和4: \(\?\:\[\^\\#\\\\S\\\\\+\]\*\) 仍然没有成功。我做错什么了吗 我只是在用: preg_replace("/$regex/", "", $string); 我的所有其他不需

我有一个在regex101.com上运行的正则表达式

(?:[^\#\\S\\+]*)
它与第一个与第二个匹配

每当我尝试将我的正则表达式与PHP的preg_replace一起使用时,我都没有得到预期的结果

到目前为止,我通过preg_quote()进行了尝试:

并尝试使用转义原始\\和4:

\(\?\:\[\^\\#\\\\S\\\\\+\]\*\)
仍然没有成功。我做错什么了吗

我只是在用:

preg_replace("/$regex/", "", $string);
我的所有其他不需要这么多转义符的正则表达式都是这样工作的。

在PHP的
preg\u match
中使用
(?:[^\\\\\S\\\+]*)
时,无论是在单引号或双引号字符串文本中,
\\S
都被解析为非空白模式
[^\S]
等于
\S
,即它与空格匹配

preg_quote()
函数仅用于使任何字符串成为正则表达式的文本字符串,它只是转义所有特殊正则表达式元字符/运算符的字符(如
[
,等等),因此您不应该在这里使用它


虽然您可以使用正则表达式从字符串开始匹配除空格和
以外的1+字符,但您可以使用
将输入字符串分解为
并获得第0项。

您的输入字符串是什么样的?您想匹配什么?您确定
(?:[^\\\\\\\\\+])
在regex101工作?@WiktorStribiżew例如firstpart#secondpart。我尝试匹配第一部分。好的,看,它,对吗?要求是什么?为什么不使用
分解
#
?如果你想使用regex,也许你可以使用
preg_match(“~^[^\s]+~,$s,$match))
,但爆炸看起来更干净。@WiktorStribiżew刚刚尝试过,效果很好。PHP还是新手,谢谢!
preg_replace("/$regex/", "", $string);