已经理解这些:1、php正则分两步:(1)解析字符串 (2)正则解析2、\\\和\\\\ 最后就是 一个普通字符\等等...
下面两个和我理解的一样 最后就是匹配一个普通字符串\a
preg_match('/\\\a/', 'a');
preg_match('/\\\\a/', 'a');
疑问:下面这两个为什么不能匹配 普通字符 a ??
preg_match('/\a/', 'a');
preg_match('/\\a/', 'a');
网上的正则图解 也是这样...
麻烦解答一下~~谢谢~~
原提问忘记在正则字符串增加定界符/.../了,修改了一下自己本地测试是有的,提问的时候忘记加了,其它都没变,继续等待解答~~
4 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
单引号不会对其中的内容做转义处理
<?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
- 4 回答
- 0 关注
- 634 浏览
添加回答
举报
0/150
提交
取消