学习“Perl基础教程:正则表达式”之摘录

1.

    =~ 将正则式去匹配字符串,生成的结果是,如果正则式在字体串获得了匹配,值为真;否则,值为假。

2.  默认的分隔符//也可以用'm'加任意字符代替:

     "Hello World" =~ m!World!;   #matches, delimited by '!'

     "Hello World" =~ m{World};   #matches, note the matching '{}'

     "/usr/bin/perl" =~ m"/perl";   #matches after '/usr/bin', '/' becomes an ordinary char

3.正则表达式区分大小写,正则式对空格敏感

4.如果正则式在字符串的多个位置都匹配,Perl首先匹配的是字符串的第一个位置。

5.不是所有的字符都能用在正则式去匹配,如下的元字符就是:

{}[]()^$.|*+?\

要匹配这些元字符,需要在元字符前使用反斜杠"\"做转义

"2+2=4" =~ /2+2/;   #doesn't match, + is a metacharacter
"2+2=4" =~ /2\+2/;  #matches, \+ is treated like an ordinary +

  6.匹配式中有变量时,变量的值会先扩展,再进行匹配

  7.^:在字符串的开始处匹配;      $:在字符串的结尾处匹配;      

     ^和$还可以同时用,结果是正则式完全匹配整个字符串

  8.字符类,表示可能字符的集合,而不是一个字符。字符类使用方括号[...]来表示

  9.'i':对于不区分大小写的匹配,可以在正则式中添加修饰符'i'。

  10.'-':字符类中的范围操作符;            如果'-'是字符类的第一个或最后一个字符,则它表示原义,不是范围操作符。

  11.\d: 匹配数字,包括[0-9],以及非罗马数字;

       \s: 匹配空格,包括[\ \t\r\n\f]等;

       \w:匹配一个单词

       \D:\d的反字符类,表示数字外的其他字符

       \S:\s的反字符类,表示任何非空格的字符

       \W:\w的反字符类,表示任何非单词的字符

       '.': '.'表示匹配除"\n"(换行符)外的任何字符。但使用了//s时不起作用

       \N:和'.'类似,匹配除换行符外的任何字符,和//s起不起作用无关。

  12./\d\d:\d\d:\d\d/     匹配hh:mm:ss时间格式

       /[\d\s]     匹配任意数字或空格

       /\w\W\w/;   匹配单词,非单词,单词模式

       /..rt/;       匹配两个字母后跟着'rt'

       /end\./;    匹配'end.'

       /end[.]/;    匹配'end.'

  13.(//): no modifiers

       (//s): s modifier

                将字符串视为单一的长行

                '.'  包括"\n"的任意字符               ^ 一行字符串的开始     $ 一行字符串的结尾

        (//m): m modifier

                将字符串视为多行的集合    

                '.' 除"\n"外的任意字符                 ^ 字符串内任意行的开始   $ 字符串内任意行的结尾

        (//sm): both s and m modifiers

                 将字符串视为单一长行,但进行多检测

                 '.' 包含"\n"的任意字符                  ^ 字符串内任意行的开始    $ 字符串内任意行的结尾

  14.在使用//m时,还可以使用锚符号:

       \A:匹配字符串的开始        \Z:匹配字符串的结尾,包括换行符     \z:仅匹配字符串的结尾

  15.|  :单词或字符串的选择元字符

  16.() :分组元字符,可以将正则式的部分作为一个单元

   17. 分组元字符()还有另一个功能:

          将匹配的字符才能够字符串中提取出来。

  18.$+ 指最高序号的变量

  19.Perl除了提供匹配内容外,还通过数组@-和@+提供的匹配的位置信息:

      $-[0] : 整个匹配结果在字符串中的起始位置

      $-[n] : 第$n个匹配结果在字符串中的起始位置

      $+[0] : 整个匹配结果在字符串中的结束位置

      $+[n] : 第$n个匹配结果在字符串中的结束位置

  20.?:匹配一次或零次;

        * : 匹配零次或任意次

        + : 匹配以此或任意次;

         {} : 匹配指定的次数

   21.

        a?? means: match 'a' 0 or 1 times. Try 0 first, then 1.

        a*? means: match 'a' 0 or more times, i.e., any number of times, but as few times as possible

        a+? means: match 'a' 1 or more times, i.e.,at least once, but as few times as possible.

        a{n,m} means: match at least n times, not more than m times, as few times as possible.

        a{n,}? means: match at lease n times, but as few times as possible

        a{n}?means:match exactly n times.Becase we match exactly n times,a{n}? is equivalent to a{n} and is just there for notainal consistency.

   22. g 和 pos()一起配合使用,能搜索整个文本

   23. 搜索替换的语法:  s/regexp/replacement/modifiers

   24.\l:将下一字符转换成小写        \u:将下个字符转换成大写

猜你喜欢

转载自blog.csdn.net/zhangge3663/article/details/79754440