查看: 1894|回复: 8
收起左侧

[其他] 正则表达式中的方括号怎么理解

[复制链接]
sishentibu
发表于 2015-8-3 12:06:14 | 显示全部楼层 |阅读模式
我用的notepad++来使用正则的查找和替换

因为不会,所以开始搞的时候瞎折腾,所以就搞出个东西理解不能了

表达式 [[]和[]],分别匹配 [ 和 ],  这个没问题
然后表达式 [[]],只匹配 [],为什么不是匹配 [ 或 ] ?
接着,表达式 [[[]]],为什么匹配的是 []],更不懂了。
然后,我再在外面套,[[[[]]]],匹配结果还是[]],不明白这个是怎么看的。。

谁能来解释下吗?
随便注册
发表于 2015-8-3 12:40:42 | 显示全部楼层
应该是软件差异,谁知道它怎么分析的。有的软件结果相同,但最后一个是3个],有的软件会报错。
可能是找最里边的一对[…],按正常分析,之前的[扔掉,之后的]按普通字符算,所以
[[]]等于[[]+]
[[[]]]等于[+[[]+]]
[[[[]]]]等于[[+[[]+]]]
jasmineamber
发表于 2015-8-3 14:53:41 | 显示全部楼层
不同软件正则的表达确实有差异, 不过这么变态的表达式应该不会碰见吧
sishentibu
 楼主| 发表于 2015-8-3 19:11:00 | 显示全部楼层
随便注册 发表于 2015-8-3 12:40
应该是软件差异,谁知道它怎么分析的。有的软件结果相同,但最后一个是3个],有的软件会报错。
可能是找最 ...

晚上试了下,最后一个真的有3改], 我试的时候注意看左边去了,没注意到
不过你的想法给了我提示,你看我这样理解对不对。我感觉我的想法还是很靠谱的

我是从左往右读,出现第一对[]之间的内容属于正则表达式内容,后续的 ] 则属于普通字符
那么,不管左边加多少个 [ ,从结果来说,[[[[] 其实就匹配了一个[,
这样,貌似都讲的通了

不过你的解释还没看懂,我再理理
sishentibu
 楼主| 发表于 2015-8-3 19:13:38 | 显示全部楼层
jasmineamber 发表于 2015-8-3 14:53
不同软件正则的表达确实有差异, 不过这么变态的表达式应该不会碰见吧

所以说,这个也是属于小白才能折腾出来的表达式啊,普通大众怎么会特地写这种表达式
不管软件,正则的思想应该还是有共通的,就当是学学[]了,至少这么一搞,这个的普通用用就会了啊
随便注册
发表于 2015-8-3 19:15:58 | 显示全部楼层
我的解释跟你说的一个意思。
都是猜的,咱不知道程序作者是如何实现的。我都是主动加转义符就没发现,你也是厉害,这也许就是不严格的BUG让你发现了。
sishentibu
 楼主| 发表于 2015-8-3 20:26:39 | 显示全部楼层
随便注册 发表于 2015-8-3 19:15
我的解释跟你说的一个意思。
都是猜的,咱不知道程序作者是如何实现的。我都是主动加转义符就没发现,你也 ...

后来我也是加了转义符的

一开始是需要给 [ 跟 ] 的外面再加方括号,查找是写出来了,但是替换的时候不知道怎么写。。然后就折腾成这样了。。纯粹是瞎搞啊
后来虽然解决了,但是这东西完全不会解读,又能出结果。所以还是来问下,多学学嘛,正好不会
牧岩
发表于 2015-8-3 21:14:52 | 显示全部楼层
一般来说,[]表示要匹配的字符范围,也就是可选的字符集合,所以匹配特殊字符自身常量的话,一般是加上转义字符。你的写法不正规,所以就要看相应的语法帮助了,notepad++基于scintilla 正则,你可以看看
sishentibu
 楼主| 发表于 2015-8-3 23:03:03 | 显示全部楼层
牧岩 发表于 2015-8-3 21:14
一般来说,[]表示要匹配的字符范围,也就是可选的字符集合,所以匹配特殊字符自身常量的话,一般是加上转义 ...

嗯,我后来写的是加转义字符的
你说的语法帮助是在哪看的?
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-13 19:45 , Processed in 0.119596 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表