为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
偶然的你 2019-03-05 09:43:25
已经理解这些: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

总结(单引号)

  1. 对于单引号内的单个\并不会转义之后的字符(\\除外)
  2. 为什么'/\a/'匹配不到字符\a, 因为正则引擎收到\a被转换成了\07的鸣笛字符 Escape sequences
查看完整回答
反对 回复 2019-03-18
?
烙印99

TA贡献1829条经验 获得超13个赞

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

匹配'\' 用'\\\\'

https://img1.sycdn.imooc.com//5c8f61c5000188c408000164.jpg

查看完整回答
反对 回复 2019-03-18
?
慕容708150

TA贡献1831条经验 获得超4个赞

https://img1.sycdn.imooc.com//5c8f61c6000139aa08000607.jpg
气人。

https://img1.sycdn.imooc.com//5c8f61c700019a2608000653.jpg
莫名奇妙。

https://img1.sycdn.imooc.com//5c8f61c900018dd208000589.jpg
interesting.
你运气好,正好用‘a’来测试。

查看完整回答
反对 回复 2019-03-18
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

匹配单个放中括号里好了preg_match('/[a]/', 'a')

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 634 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信