ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Perl正则表达式

Perl正则表达式

原创 Linux操作系统 作者:tinysisi 时间:2008-01-16 16:26:38 0 删除 编辑
正则表达式之元字符:

正则表达式之元字符:

    .匹配除\n外的任意一个字符

    \转义符

正则表达式之量词:

    {3}         匹配前一单元的三个    *?{0, }?   匹配前一单元的零个或多个 

    +?{1, }?   匹配前一单元的一个或多个 

    ??{0,1}?   匹配前一单元的零个或一个 

    * {0, }     匹配前一单元的多个或零个

    + {1, }     匹配前一单元的多个或一个

    ? {0,1}     匹配前一单元的一个或零个

正则表达式之编组:

    ()      编组 且触发记忆    (?:)   编组但不触发记忆正则表达式之多个选择:

    |

正则表达式之文法和算符优先级:

    '()', '(?: )' >

'*', '*?', '+', '+?', '?', '??', '{}', '{}?' >

'' >

'|'

    -> '|' |

    -> |

    -> ('*' | '+' | '?' |'{''}') |

         -> '('')' |'(?:'')' |    

正则表达式之字符类:

    [abcwxyz]== [a-cw-z]

    \d== [0-9]

    \D== [^0-9]

    \w== [a-zA-Z0-9_]

    \W== [^a-zA-Z0-9_]

    \s== [\f\t\n\r ]

    \S== [^\f\t\n\r ]

 

正则表达式之选项修饰符:

    /i使匹配大小写不敏感

    /s使.匹配任意字符,包含'\n',等价于[\d\D]

    /x允许正则表达式中用空白和注释来增强可读性,空格文字和制表符文字等等将被忽略,只能用\s\t等表示。    /m匹配多行目标串时,改^$的意义为行首锚和行尾锚

    /g无重叠全局替换修饰符

正则表达式之锚:

    ^ 串首锚

    $ 串尾锚

    \b单词边界锚参考\w

    \B非单词边界锚

正则表达式之绑定算子:

    =~非赋值运算符也,绑定运算符也,It's ing: 不处理$_了,处理我左边的那个家伙正则表达式插值:

    双引插值规则正则表达式之匹配变量

    ()不仅用于正则表达式的编组,也触发匹配引擎的记忆,引擎会将整个匹配段中与括号内正则表达式对应  的那部分存入记忆体内。1编号,引用以$1$2...

    记忆至下一次匹配成功时结束    $&$MATCH     整个匹配段

    $`$PREMATCH  匹配段之前的子串

    $'$POSTMATCH 匹配段之后的子串

正则表达式举例:

    /^fred|barney$/要么以fred打头,要么以barney结尾的串    /^(fred|barney)$/

    /(wilma|pebbles?)/

    /^fred|barney$/m

   

正则表达式之文本处理之替换:

    分隔符规则:        s#^https://#http://#;

        s{fred}{barney};

        s[fred](barney);

        s#barney#;

    绑定算子:        =~

    大小写切换:        \U此处起至\E全部大写

        \L此处起至\E全部小写

        \u下一个字母大写

        \l下一个字母小写

    举例:        s/(bush|mandola)/\u\L$1/ig

正则表达式之split算子

    语法:        split/PATTERN/, EXPR, LIMIT

        /PATTERN/分割EXPR,最多分成LIMIT        LIMIT省略且尾部为空串,则丢弃它        LIMIT为负值,则视其为无穷大        EXPR缺省为$_

        /PATTERN/缺省为/\s+/

 

正则表达式之列表环境下的m//:    返回引擎记忆体中的变量。    my$data = "Barney Rubble Fred Flintstone Wilma Flintstone";

    my%last_name = ($data =~ /(\w+)\s+(\w+)/g);

    my@arr = ($data =~ /(\w+)\s+(\w+)/g);

   

 

正则表达式之匹配多行文本:

    ^$普通模式下是串首锚和串尾锚,在/m(多行模式)下为行首锚和行尾锚

    \A匹配串首,\Z 匹配串尾

    /^nat/m=== /^nat|\nnat/

   

    openFILE, $filename

        ordie "Can't open '$filename': $!";

    my$lines = join '', ;

    $lines=~ s/^/$filename: /gm;

   

正则表达式之更新多个文件:

    钻石符号<>的魔力:他会自动地为你打开和关闭在命令行指定的一系列文件,    若命令行没有指定任何文件名,    他就打开标准输入。    $^I会改变<>的行为,若$^I不是undef,则<>会将文件重命名以"文件名" .

    "$^I",然后创建名为"文件名"的文件,然后打开重命名后的文件以读,    打开新建的文件以写。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11041371/viewspace-145727/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2008-01-16

  • 博文量
    1
  • 访问量
    1414