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

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

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

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

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

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

    (0-9)匹配'0-9'本身。[0-9]*匹配数字(注意后面有*,可以为空)[0-9]+匹配数字(注意后面有+,不可以为空),

    {0-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次,最多三次。如果没有括号的话,ab{1,3},

    就表示a 后面紧跟的b出现的最少一次,最多三次。另外,括号在匹配模式中也跟重要。这个就不延伸了。

    []表示匹配字符在[]中,兵出现一次,并且reshuffle字符写在[]会被当成普通字符来匹配,例如[(a)],会匹配(、a、)、这三个字符。

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

  • 相关阅读:
    屏蔽2003:在系统启动时至少有一个服务或驱动程序产生错误
    C#中有关string和byte[]转换的问题
    如何控制winform程序只能打开一个呢?
    ArrayList的使用方法【转载】
    ASP.NET中ajaX学习记录
    C#去除字符串空格的几种方法【转载】
    C# 中2,10,16进制及其ASCII码之间转化
    vc++下char数组赋值乱码问题
    c#关机时自动退出程序
    Android入门前言(一)之Android应用开发入门五问 (转自:http://blog.csdn.net/android_tutor/)
  • 原文地址:https://www.cnblogs.com/richiewlq/p/7307581.html
Copyright © 2011-2022 走看看