使用\Q\E语法的PHP正则表达式

使用\Q\E语法的PHP正则表达式,php,regex,Php,Regex,我正在阅读,上面写着:在\Q和\E之间的所有字符都被解释为文字字符。例如.\Q*\d+*\E匹配文本*\d+*。 所以我测试了一下: $pattern = '/\Q~!@#$%^&*()_+|}{?><,./\][":';\E/'; $string = '~!@#$%^&*()_+|}{?><,./\][":';'; preg_match( $pattern, $string, $matches ); echo "<pre>"; print_

我正在阅读,上面写着:
在\Q和\E之间的所有字符都被解释为文字字符。例如.\Q*\d+*\E匹配文本*\d+*。

所以我测试了一下:

$pattern = '/\Q~!@#$%^&*()_+|}{?><,./\][":';\E/';
$string = '~!@#$%^&*()_+|}{?><,./\][":';';
preg_match( $pattern, $string, $matches );

echo "<pre>";
print_r($matches);
echo "</pre>";

为什么不能像上面所说的那样工作?

您忘记在模式中引用您的


$pattern='/\Q~!@#$%^&*查看语法突出显示。注意到任何奇怪的地方吗?好的,所以我更新如下:$pattern='/\Q~!@$%^&*()但给了我一个:
警告:preg\u match():未知修饰符“\”在
中是的,因为您的模式中也有一个unscaped
/
。例如,在尝试这么复杂的东西之前,您应该先学习基本的正则表达式语法。谢谢您的帮助,我解决了它!
Parse error: syntax error, unexpected '~' in /Applications/XAMPP/xamppfiles/htdocs/xampp/web_development/new_study_2014/regex.php on line 3
$pattern = '/\Q~!@#$%^&*()_+|}{?><,./\][":';\E/';
           ^--start string #1             ^--end string #1
                                               ^--start string #2
$string = '~!@#$%^&*()_+|}{?><,./\][":';';
          ^---end of string #2
           ^---your error, because it's OUTSIDE of a string