正则表达式() [] {}区别以及各种符号表达的意义

圆括号() 是组,主要应用在限制多选结构的范围/分组/捕获文本
方括号[] 是单个匹配 字符集/排除字符集/命名字符集

正文内容

正则表达式() [] {} 有着不同的意思,如下

  1. ()是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串。

  2. [] 是定义匹配的单个字符的范围,比如[a-zA-Z0-9]表示相应位置的字符要匹配英文字符或数字。

  3. {} 一般是用来匹配的长度,格式为{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、) 这三个字符。

所以()[] 无论是作用还是表示的含义。都有天壤之别,没有什么联系。

转载:https://blog.csdn.net/u010356237/article/details/109181186

  • 10
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值