圆括号() 是组,主要应用在限制多选结构的范围/分组/捕获文本
方括号[] 是单个匹配 字符集/排除字符集/命名字符集
正文内容
正则表达式的() [] {}
有着不同的意思,如下
-
()
是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串。 -
[]
是定义匹配的单个字符的范围,比如[a-zA-Z0-9]表示相应位置的字符要匹配英文字符或数字。 -
{}
一般是用来匹配的长度,格式为{n}、{n,m}、{n,}。(ab){0,12}? 表示匹配0到12次但尽可能少
扩展
元字符 | 说明 |
---|---|
^ | 行首。限定字符串开头 |
$ | 行尾。限定字符串结尾 |
. | 任意字符。 |
* | 匹配0次或多次。 |
+ | 匹配1次或多次。 |
? | 匹配0次或1次。 |
? | 匹配修饰符,当该字符跟在任何一个其他限制符 (* 、+、?、 {n}、 {n,}、 {n,m})后面时,匹配模式为非贪婪模式。非贪婪模式尽可能少的匹配所搜索的字符串, 而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 |
A | B |
(abc)* | 匹配abc序列0次或多次。 |
{n}或{m,n} | 匹配的次数。 |
[ab] | 匹配括号中的任一字符。模式匹配a或b。 |
[a-d] | 匹配a、b、c、d任一字符。 |
[^ab] | ^表示非,匹配任一非a非b的字符。 |
[::] | 见下表POSIX字符组。 |
\ | 转义符。 |
\n | n为数字1-9,后向引用。 |
\d | 数字。 |
\D | 非数字。 |
圆括号()是组,主要应用在限制多选结构的范围/分组/捕获文本
1、(abc)*表示这一组要么一起出现,要么不出现,出现那则按顺序出现
2、(abc|bcd|cde) 表示这一段是abc、bcd、cde三者之一,顺序也必须一致
3、(0-9)匹配’0-9’本身
4、(abc?) 表示匹配ab后面可以跟着一个或多个c ,例如匹配网址,可以用’(https?)'表示http开头 或 https 都可以匹配的到
5、{0-9}写法是错误的
方括号[]是单个匹配 字符集/排除字符集/命名字符集
1、[0-3] 表示找到一个位置上的字符只能是0到3这四个数字,与(abc|bcd|cde)的作用比较类似,但圆括号可以匹配多个连续的字符
而一对方括号只能匹配单个字符
2、[^0-3] 表示找到这个位置上字符只能是除了0到3之外的所有字符
3、1,含义为以0-9中的数字为第一个数字开头
4、[\x{4e00}-\x{9fa5}a-zA-Z0-9] 匹配中文或26个大小写字母或0-9数字。
5、[0-9]{0,9} 表示长度为0到9的数字字符串
6、[(a)],会匹配(、a、)** 这三个字符
ODPS的中文是 [\x{4e00}-\x{9fa5}]
()和[]的区别总结
()内的内容表示的是一个表达式,()本身不匹配任何东西,也不是匹配任何东西,只是把括号内的内容作为同一个表达式来处理,例如(ab){1,3},就表示ab一起连续出现最少1次,最多三次。如果没有括号的话,ab{1,3} ,就表示a 后面紧跟的b出现的最少一次,最多三次。另外,括号在匹配模式中也跟重要。这个就不延伸了。
[]表示匹配字符在[]中,兵出现一次,并且reshuffle字符写在[]会被当成普通字符来匹配,例如[(a)],会匹配(、a、) 这三个字符。
所以()[] 无论是作用还是表示的含义。都有天壤之别,没有什么联系。
转载:https://blog.csdn.net/u010356237/article/details/109181186