zoukankan      html  css  js  c++  java
  • 3.2.2.3 单个表达式匹配多字符

        匹配多字符最简单的方法就是把它们一个接一个(连接)列出来,所以正则表达式 ab 匹配于 ab, ..(两个点号)匹配于任意两个字符,而 [[:upper:][:lower:]] 则匹配于任意一个大写字符,后面接着任意一个小写字符。不过,将这些字符全列出来只有在简短的正则表达式里才好用。
     
        虽然 . (点号)meta 字符与方括号表达式提供了一次匹配一个字符的很好方式,但正则表达式真正强而有力的功能,其实是在修饰符( modifier)meta 字符的使用上。这类 meta 字符紧接着在具有单个字符的正则表达式时候,且它们hi改变正则表达式的含义。最常用的修饰符为星号(*),表示“匹配0个或多个前面的单个字符”。
     
        注意:“匹配0或多个”不表示“匹配其他的某一个”,了解这一点是相当重要的。也就是说,正则表达式 ab*c 下,文本 aQc 是不匹配的--即便是 aQc 里拥有0个 b 字符。相对地,以文本 ac 来说,b* 在 ab*c 里表述的是匹配 a 与 c 之间含有空字符串(null string)--意即长度为0的字符串。
     
        *修饰符是好用的,但它没有限制,你不能用*表示“匹配三个字符,而不是四个字符”,而要使用一个复杂的方括号表达式,表明所需的匹配次数--这也是件很麻烦的事。区间表达式可以解决这类问题。就像 * ,它们一样接在单个字符正则表达式后面,控制该字符连续重复几次即为匹配成功。区间表达式是将一个或两个数字,放在 { 和 } 之间,有3种变化,如下:
     
    1.  {n}          前置正则表达式所得结果重现 n 次
    2. {n,}          前置正则表达式所得结果重现至少 n 次
    3. {n,m}       前置正则表达式所得结果重现 n 至 m 次
     
        有了区间表达式,要表达像“重现5个 a ”或是“重现10到42个 q ”就变得很简单了,这两项分别是:a{5}     q{10,42}。
     
        n 与 m 的值必须介于0至RE_DUP_MAX(含)之间。
     
        RE_DUP_MAX 的获取方法:
     
        [many@avention Desktop]$ getconf RE_DUP_MAX
        32767
     
     
     
  • 相关阅读:
    CMMI的5个级别
    ubuntu下的烧录工具
    Git 安装配置
    使用 Git & Repo 下载代码
    Git 忽略文件
    Git rebase
    使用Git进行本地提交后,未上传提交,却不小心删除了本地提交或提交所在分支,怎么办?????
    Repo
    IOS关于UIViewController之间的切换
    PresentModalViewController
  • 原文地址:https://www.cnblogs.com/avention/p/10307119.html
Copyright © 2011-2022 走看看