(ab|a)
[ab|a]
(a|b)
[a|b]
基本是等价的。(完全不等价,一时脑抽)
但是为何:^(ab|a)$
与 ^[ab|a]$
匹配的值不同?
^(ab|a)$
匹配 ab
或 a
^[ab|a]$
匹配 a
或 b
PHP中文网2017-04-10 15:20:47
[]和()是不一样的,在[]里面元字符将失去原本特殊的含义,变成只是字符本身,所以[a|b]是可以匹配里面三个字符中的任意一个,而(a|b)是匹配a或者b并作为一个分组。
说的不对的也请大家纠正
伊谢尔伦2017-04-10 15:20:47
() 和 [] 的用法是不一样的, 在 [] 中只有2种转义: ^ 开头, 或者 1-9 这样表示范围的
另外还有一个坑爹的事, [] 只能匹配单个字符, 比如你汉子就会被拆开成 2 个 字符 , 无法匹配到
大家讲道理2017-04-10 15:20:47
正则表达式中的(...)
和[...]
并不是等价的吧。(...)
代表的是一个分组里面包含的是正则表带式并可以被后文引用;而[...]
代表的是字符集合,匹配所包含的任意一个字符,并不能被后面的表达式引用。
黄舟2017-04-10 15:20:47
http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%...
手册写得很清楚两种括号的用途