Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14279
  • 博文数量: 11
  • 博客积分: 236
  • 博客等级: 二等列兵
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-10 20:30
文章分类

全部博文(11)

文章存档

2011年(11)

我的朋友

分类: Python/Ruby

2011-07-05 15:23:42

正则表达式


1、元字符(通配符)
> .  :用于匹配除了换行符(\n)以外的任何单个字符。
        eg: m/p.t/   可以匹配pat, pot, pet等。 不可以匹配paat, peat, pt。
> + :使+前边的字符只少出现一次。
        eg: m/pe+t/  可以匹配pet, peeet, peeeeet等。 不可以匹配pt, peat等。
> *  :使*前边的字符进行0次或多次匹配。
        eg: m/pe*t/  可以匹配pt, pet, peeeeet等。 不可以匹配pat, peat等。
> ? :使?前边的字符进行0次或1次匹配(不能超过一次)。
        eg: m/pe?t/  可以匹配pt, pet。 不可以匹配pat, peeeet等。

2、精确指定模式匹配次数
     形式: pat{n, m}             n是最小匹配次数,m是最大匹配次数,n,m可以身略一个,但不能同时省略。
     eg:     /x{5,10}        / x至少出现5次,但是不超过 10次。
                /x{9,}            / x至少出现9次,也可能出现更多次。
                /x{0,4}          / x最多出现4次,也可能根本不出现。
                /x{8}             / x必须正好出现8次,不能多,也不能少。

3、字符类
     Perl允许指定一个字符类,以便匹配类中任意一个字符。该字符类用[]括起来。字符类可以使用范围指定符‘-’。
     eg:    [abcde]              用于匹配a、b、c、d或e中的任何一个字符
               [a-e]                   与上面相同。用于匹配 a、b、c、d或e中的任何一个字符
               [Gg]                    用于匹配大写字母 G或小写字母 g
               [0-9]                   用于匹配一个数字
               [0-9]+                用于顺序匹配一个或多个数字
               [A-Za-z]{5}      用于匹配任何一组 5个字母字符
               [*!@ #$%&()]   用于匹配这些符号中的任何一个
      在[]中的开始位置插入^,将使该类变为无效,用于匹配字符类以外的任何字符。

      常用字符类的表示方式:
      \w         一个单词字符,与 [a-zA-z0-9_]相同
      \W        一个非单词字符(与 \w相反)
      \d          一个数字,与 [0-9]相同
      \D          一个非数字
      \s           一个白空间字符,与 [\t\f\r\n]相同
      \S            一个非白空间字符

4、分组和选择
      在一个正则表达式的多个模式之间插入‘|’分隔符后,就出现了选择。当被匹配的内容中能匹配正则表达式中的任意一个模式时,就说明匹配成功。例如: m/dogs|cats/ 将匹配含有dogs或cats的任意字符串。

5、位置通配符
      有两通配符用于明确指出要匹配内容在字符串中的位置(开头、结尾)。
      ^ : 插在正则表达式的开始位置。要求其后的内容要在被匹配字符串的开始位置。
       $ : 插入在正则表示的结尾处,要求其前边的内容要在被匹配字符串的结束位置。

6、替换
      s/PATTERN/REPLACE/    用REPLACE的内容替换匹配与PATTERN模式的内容。
       eg:$_ = "Our house is in the middle of out street";
               s/middle/end/;        # Is now: Our house is in the end of our street.
               s/in/at/;                    # Is now: Our house is at the end of our street.
         

阅读(372) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~