正则表达式中()、[]、{}的区别
正⽂内容
正则表达式的() [] {} 有着不同的意思。
()是为了提取匹配字符串的,表达式中有⼏个()就有⼏个相应的匹配字符串
(\s*)表⽰连续空格的字符串
[] 是定义匹配的字符范围。⽐如[a-zA-Z0-9]表⽰相应位置的字符要匹配英⽂字符和数字。[\s*表⽰空格或者*号]
{}⼀般是⽤来匹配的长度。⽐如\s{3}表⽰匹配三个空格,\s[1,3]表⽰匹配1到3个空格
(0-9)匹配'0-9'本⾝。[0-9]*匹配数字(注意后⾯有*,可以为空)[0-9]+匹配数字(注意后⾯有+,不可以为空),
{0-9}写法是错误的
[0-9]{0,9}表⽰长度为0到9的数字字符串。
圆括号()是组,主要应⽤在限制多选结构的范围/分组/捕获⽂本/环视/特殊模式处理
⽰例:
1(abc|bcd|cde),表⽰这⼀段是abc、bcd、cde三者之⼀,顺序也必须⼀致
2、(abc)?表⽰这⼀组要么⼀起出现,要么不出现,出现那则按顺序出现
3、(?:abc)表⽰到⼀样abc的⼀组,但是不记录,不保存到变量中,否则可以通过变量中,否则可以通过x取第⼏个括号所匹配道德项,⽐如:
(aaa)(bbb)(ccc)(?:ddd)(eee)可以⽤1获取(aaa)匹配到的内容,⽽1获取(aaa)匹配到的内容,⽽3则获取到了(ccc)匹配到的内容,⽽$4则获取的是由(eee)
匹配到的内容,因为前⼀对括号没有保存变量
4.a(?=bbb)顺序环视表⽰a后⾯必须紧跟3个连续的b
5、(?i:xxxx)不区分⼤⼩写 (?s:.*)跨⾏匹配,可以匹配回车符
⽅括号是单个匹配字符集/排除字符集/命名字符集
⽰例:
正则表达式获取括号内容1、[0-3],表⽰到⼀个位置上的字符只能是0到3折四个数字,与(abc|bcd|cde)的作⽤⽐较类似,但圆括号可以匹配多个连续的字符
⽽⼀对⽅括号只能匹配单个字符
2、[^0-3] 表⽰到这个位置上字符只能是除了0到3之外的所有字符
3、[:digit:] 0-9 [:alnum] A-Za-z0-9
()和[]有本质的区别
()内的内容表⽰的是⼀个表达式,()本⾝不匹配任何东西,也不惜那是匹配任何东西,只是把括号内的内容作为
同⼀个表达式来处理,例如(ab){1,3},就表⽰ab⼀起连续出现最少1次,最多三次。如果没有括号的话,ab{1,3},
就表⽰a 后⾯紧跟的b出现的最少⼀次,最多三次。另外,括号在匹配模式中也跟重要。这个就不延伸了。
[]表⽰匹配字符在[]中,兵出现⼀次,并且reshuffle字符写在[]会被当成普通字符来匹配,例如[(a)],会匹配(、a、)、这三个字符。
所以()[] ⽆论是作⽤还是表⽰的含义。都有天壤之别,没有什么联系。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论