作者LPH66 (-6.2598534e+18f)
看板RegExp
标题Re: [问题] regular 在java unix 为什麽不一样?
时间Fri Sep 25 18:22:38 2015
※ 引述《pttnews (PTT新闻)》之铭言:
: 在java 我用 http://java-regex-tester.appspot.com/ 测试
: 在unix 我用 vim 测试
: 最近小弟在学习regular , regular 实属强大不得不学
: 有很多问题
: 例如:
: [a-b[c-d]] 我想要找a-b and c-d
: 在vim 没办法找到 /[a-b[c-d]
: 在java 则可以
: 请问各位高手, 这两者为何不一?
: 找到答案,
: Unix 要加上\
: [a-b\[c-d\]]
你一定哪里搞错了
[a-b\[c-d\]] 是「a 到 b、或 [、或 c 到 d、或 ]」
这怎麽看都不是「a-b and c-d」...
再说你这句「a-b and c-d」也语焉不详,究竟你想找的是什麽东西 @@
----
然後回到 [a-b[c-d]],它是 [a-b[c-d] 跟着 ]
前一个是「a 到 b、或 [、或 c 到 d」
[] 的规则是平常时候只有 [ 为特殊字,] 不是;
碰到 [ 之後变成 ] 为特殊字,[ 不是
然後这两个特殊字中间再去套字元类别的规则
也就是 [] 是没有巢状结构的,[ 会配上它後面第一个看到的 ] 把中间一把抓
原式找不到东西的原因多半就是因为这样而留在外面的最後一个 ] 吧
在外面 ] 不是特殊字所以它就要求对上一个 ] 字
--
LPH [acronym]
= Let Program Heal us
-- New Uncyclopedian Dictionary, Minmei Publishing Co.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.30.49
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/RegExp/M.1443176561.A.4C5.html
1F:推 pttnews: 谢谢L大, 我想要测试 交集 跟 联集 09/25 21:00
3F:→ pttnews: 按照他上面的说明 [a-d[m-p]]联集 [a-z&&[def]]交集 09/25 21:02
4F:→ pttnews: 事实上, 好像如你所说[]被当成字元看待 09/25 21:04
5F:→ pttnews: 请问是不是他说错了 09/25 21:04
6F:→ LPH66: 应该是他弄错了...常见的 regexp 的 character class 09/25 21:41
7F:→ LPH66: 直接写一起就是联集, 如 [a-dm-p] 09/25 21:41
8F:→ LPH66: 交集的话我不太确定, 似乎有 google 到好像部份的 regexp 09/25 21:43
9F:→ LPH66: 支援他讲的 && 语法的样子 09/25 21:43
10F:→ LPH66: 啊, 找到文件了: 他讲的那种交集联集语法 java 有支援 09/25 21:47
11F:→ LPH66: 所以你在那个网站上面测试会如你所预期 09/25 21:47
13F:→ LPH66: 但那种语法一般的 PCRE regexp 是不支援的 09/25 21:49
14F:→ LPH66: 所以 vim 才试不出来 09/25 21:49
15F:推 pttnews: 谢谢L大 09/25 22:08
16F:→ pttnews: 好像.NET也有一些奇怪的语法 09/25 22:09
17F:→ pttnews: 先不管~现有这些够用了 09/25 22:10