(ab|a)
[ab|a]
(a|b)
[a|b]
基本是等价的。(完全不等价,一时脑抽)
但是为何:^(ab|a)$
与 ^[ab|a]$
匹配的值不同?
^(ab|a)$
匹配ab
或a
^[ab|a]$
匹配a
或b
(ab|a)
[ab|a]
(a|b)
[a|b]
基本是等价的。(完全不等价,一时脑抽)
但是为何:^(ab|a)$
与 ^[ab|a]$
匹配的值不同?
^(ab|a)$
匹配 ab
或 a
^[ab|a]$
匹配 a
或 b
() 和 [] 的用法是不一样的, 在 [] 中只有2种转义: ^ 开头, 或者 1-9 这样表示范围的
另外还有一个坑爹的事, [] 只能匹配单个字符, 比如你汉子就会被拆开成 2 个 字符 , 无法匹配到
正则表达式中的(...)
和[...]
并不是等价的吧。(...)
代表的是一个分组里面包含的是正则表带式并可以被后文引用;而[...]
代表的是字符集合,匹配所包含的任意一个字符,并不能被后面的表达式引用。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
[]和()是不一样的,在[]里面元字符将失去原本特殊的含义,变成只是字符本身,所以[a|b]是可以匹配里面三个字符中的任意一个,而(a|b)是匹配a或者b并作为一个分组。
说的不对的也请大家纠正