zoukankan      html  css  js  c++  java
  • 正则表达式(括号)、[中括号]、{大括号}的区别小结 通用所有语言 系统

    正则表达式的() [] {}有不同的意思。

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

    (s*)表示连续空格的字符串。

    []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[s*]表示空格或者*号。

    {}一般用来表示匹配的长度,比如 s{3} 表示匹配三个空格,s[1,3]表示匹配一到三个空格。

    (0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-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)匹配到的内容,而$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次,最多3次。如果没有括号的话,ab{1,3},就表示a,后面紧跟的b出现最少1次,最多3次。另外,括号在匹配模式中也很重要。这个就不延伸了,LZ有兴趣可以自己查查
    []表示匹配的字符在[]中,并且只能出现一次,并且特殊字符写在[]会被当成普通字符来匹配。例如[(a)],会匹配(、a、)、这三个字符。
    所以() [] 无论是作用还是表示的含义,都有天壤之别,没什么联系



  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/signheart/p/20a396bdbdeb9aa446663395eea4e3c4.html
Copyright © 2011-2022 走看看