zoukankan      html  css  js  c++  java
  • 正则表达式()、[]、{}的区别

    小括号()、中括号[]、大括号的区别

     1>. 小括号():匹配小括号内的字符串,可以是一个,也可以是多个,常跟“|”(或)符号搭配使用,是多选结构的

      示例1:string name = "way2014";  regex:(way|zgw)  result:结果是可以匹配出way的,因为是多选结构,小括号是匹配字符串的

      示例2:string text = "123456789";  regex:(0-9) result:结果是什么都匹配不到的,它只匹配字符串"0-9"而不是匹配数字, [0-9]这个字符组才是匹配0-9的数字

     2>.中括号[]:匹配字符组内的字符,比如咱们常用的[0-9a-zA-Z.*?!]等,在[]内的字符都是字符,不是元字符,比如“0-9”、“a-z”这中间的“-”就是连接符号,表示范围的元字符,如果写成[-!?*(]这样的话,就是普通字符

      示例1: string text = "1234567890";  regex:[0-9]  result:结果是可以匹配出字符串text内的任意数字了,像上边的【或符号“|”在字符组内就是一个普通字符】

      示例2:string text = "a|e|s|v";  regex:[a|e|s]  result:结果就是匹配字符a、e、|三个字符,这个跟(a|e|s)有区别的,区别就是(a|e|s)匹配的是a、e、s三个字符的随意一个,三个中的任意一个,这是的|是元字符

     3>.大括号{}:匹配次数,匹配在它之前表达式匹配出来的元素出现的次数,{n}出现n次、{n,}匹配最少出现n次、{n,m}匹配最少出现n次,最多出现m次

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

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

    (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、)、这三个字符。
    所以() [] 无论是作用还是表示的含义,都有天壤之别,没什么联系

  • 相关阅读:
    jsp转向
    什么是 XDoclet?
    tomcat中的几点配置说明
    mysql5问题
    POJ 3734 Blocks
    POJ 2409 Let it Bead
    HDU 1171 Big Event in HDU
    POJ 3046 Ant Counting
    HDU 2082 找单词
    POJ 1286 Necklace of Beads
  • 原文地址:https://www.cnblogs.com/lxqiaoyixuan/p/8638811.html
Copyright © 2011-2022 走看看