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
     
     
     
  • 相关阅读:
    dotnet 新项目格式与对应框架预定义的宏
    dotnet 线程静态字段
    dotnet 线程静态字段
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取系统信息
    dotnet 通过 WMI 获取系统信息
    PHP show_source() 函数
  • 原文地址:https://www.cnblogs.com/avention/p/10307119.html
Copyright © 2011-2022 走看看