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