圆括号() 是组,主要应用在限制多选结构的范围/分组/捕获文本 方括号[] 是单个匹配 字符集/排除字符集/命名字符集
正则表达式的() [] {} 有着不同的意思,如下
() 是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串。
[] 是定义匹配的单个字符的范围,比如[a-zA-Z0-9]表示相应位置的字符要匹配英文字符或数字。
{} 一般是用来匹配的长度,格式为{n}、{n,m}、{n,}。(ab){0,12}? 表示匹配0到12次但尽可能少
扩展
元字符说明^行首。限定字符串开头$行尾。限定字符串结尾.任意字符。*匹配0次或多次。+匹配1次或多次。?匹配0次或1次。?匹配修饰符,当该字符跟在任何一个其他限制符 (* 、+、?、 {n}、 {n,}、 {n,m})后面时,匹配模式为非贪婪模式。非贪婪模式尽可能少的匹配所搜索的字符串, 而默认的贪婪模式则尽可能多的匹配所搜索的字符串。AB(abc)*匹配abc序列0次或多次。{n}或{m,n}匹配的次数。[ab]匹配括号中的任一字符。模式匹配a或b。[a-d]匹配a、b、c、d任一字符。[^ab]^表示非,匹配任一非a非b的字符。[::]见下表POSIX字符组。\转义符。\nn为数字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、) 这三个字符。
所以()[] 无论是作用还是表示的含义。都有天壤之别,没有什么联系。
0-9 ↩︎