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