猿问

php 涉及反斜杠\的正则 \a

已经理解这些:
1、php正则分两步:(1)解析字符串 (2)正则解析
2、\\\和\\\\ 最后就是 一个普通字符\
等等...

下面两个和我理解的一样 最后就是匹配一个普通字符串\a

preg_match('/\\\a/', 'a');
preg_match('/\\\\a/', 'a');

疑问:下面这两个为什么不能匹配 普通字符 a ??

preg_match('/\a/', 'a');
preg_match('/\\a/', 'a');

网上的正则图解 也是这样...

麻烦解答一下~~
谢谢~~

原提问忘记在正则字符串增加定界符/.../了,修改了一下
自己本地测试是有的,提问的时候忘记加了,其它都没变,继续等待解答~~

偶然的你
浏览 635回答 4
4回答

一只名叫tom的猫

单引号不会对其中的内容做转义处理 <?php var_dump(preg_match('/\a/', '\a', $matches)); // int(0) var_dump($matches); // array() // Pattern ======= 正则引擎收到的输入 // \a ------- \a var_dump(preg_match('/\a/', "\07", $matches)); // int(1) var_dump($matches); // array('[响铃字符]') // Pattern ======= 正则引擎收到的输入 // \a ------- \a var_dump(preg_match('/\\\a/', '\a', $matches)); // int(1) var_dump($matches); // array('\a') // Pattern ======= 正则引擎收到的输入 // \\\a ------- \\a var_dump(preg_match('/\\a/', 'a', $matches)); // int(0) var_dump($matches); // array() // Pattern ======= 正则引擎收到的输入 // \a ------- \a var_dump(preg_match('/\\a/', "\07", $matches)); // int(1) var_dump($matches); // array('[响铃字符]') // Pattern ======= 正则引擎收到的输入 // \a ------- \a var_dump(preg_match('/\\\\a/', '\a', $matches)); // int(1) var_dump($matches); // array('\a') // Pattern ======= 正则引擎收到的输入 // \\\\a ------- \\a var_dump(preg_match('/\a/', '\a', $matches)); // int(0) var_dump($matches); // array() // Pattern ======= 正则引擎收到的输入 // \a ------- \a 总结(单引号) 对于单引号内的单个\并不会转义之后的字符(\\除外) 为什么'/\a/'匹配不到字符\a, 因为正则引擎收到\a被转换成了\07的鸣笛字符 Escape sequences

烙印99

为什么是四条\\a呢?因为\a不会被转义,\\a转义之后刚好是\a 匹配'\' 用'\\\\'

慕容708150

气人。 莫名奇妙。 interesting.你运气好,正好用‘a’来测试。

慕婉清6462132

匹配单个放中括号里好了preg_match('/[a]/', 'a')
随时随地看视频慕课网APP
我要回答