zoukankan      html  css  js  c++  java
  • Perl--正则

    当用于匹配操作时,有时候 =~ 和 !~ 分别读做“匹配”和“不匹配”(因为“包含”和“不包含”会让人觉得有点模
    糊)。
    
    "hot cross buns" =~ /cross/;
    print "$`
    "; #匹配左边内容
    print "$&
    "; #匹配的内容 
    print "$'
    "; #匹配内容右边的文本
    
    [oracle@jhoa 2]$ perl 1.pl 
    hot 
    cross
     buns
    
    为了有更好的颗粒度和提高效率,你可以用圆括弧捕捉你特别想分离出来的部分。每对圆括弧捕捉与圆括弧内的模
    式相匹配的子模式。圆括弧由左圆括弧的位置从左到右依次排序;对应那些子模式的子字串在匹配之后可以通过顺
    序的变量 $1,$2,$3 等等获得
    
    [oracle@jhoa 2]$ cat 2.pl 
    $_ = "Bilbo Baggins's birthday is September 22's xxx";
    /(.*)'s birthday is (.*)'s(.*)/;
    print "Person: $1
    ";
    print "Date: $2
    ";
    print " $3
    ";
    [oracle@jhoa 2]$ perl 2.pl 
    Person: Bilbo Baggins
    Date: September 22
      xxx
    
    [oracle@jhoa 2]$ cat 3.pl 
    $var="model name: Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz's test";
     if( $var =~ /model name.*: (.*)'s(.*)/){print "1--$1,2--$2
    ";};
    [oracle@jhoa 2]$ perl 3.pl 
    1--Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz,2-- test
    
    
    ?正则修饰词:/i 忽略字母的大小写(大小写无关)
    
    [oracle@jhoa 2]$ cat 4.pl 
    $var="AAA";
    if ($var =~ /aaa/){print "xxx
    ";};
    [oracle@jhoa 2]$ perl 4.pl 
    
    
    [oracle@jhoa 2]$ cat 4.pl 
    $var="AAA";
    if ($var =~ /aaa/i){print "xxx
    ";};
    [oracle@jhoa 2]$ perl 4.pl 
    xxx
    
    元字符 "." 匹配除了换行符以外的任何单个字符
    
    [oracle@jhoa 2]$ cat 5.pl 
    $var="aaa";
    if ($var =~ /aaa./){print "xxx
    ";};
    [oracle@jhoa 2]$ perl 5.pl 
    [oracle@jhoa 2]$ 
    
    [oracle@jhoa 2]$ cat 5.pl 
    $var="aaa1";
    if ($var =~ /aaa./){print "xxx
    ";};
    [oracle@jhoa 2]$ perl 5.pl 
    xxx
    
    
    [oracle@jhoa 2]$ cat 5.pl 
    $var="aaa
    ";
    if ($var =~ /aaa./){print "xxx
    ";};
    [oracle@jhoa 2]$ perl 5.pl 
    [oracle@jhoa 2]$ 
    
    此时.号无法匹配回车
    
    [oracle@jhoa 2]$ cat 5.pl 
    $var="aaa
    ";
    if ($var =~ /aaa./s){print "xxx
    ";};
    [oracle@jhoa 2]$ perl 5.pl 
    xxx
    
    此时.匹配换行符
    
    /s 令 . 匹配换行符并且忽略不建议使用的 $* 变量 s是将字符串作为单行处理
    
    /m 将待匹配的串视为多行,^符号匹配字符窜的起始和新的一行的起始;$符号匹配任意行的末尾。以下例只匹配第一行为a,否则无法匹配。
    
    /x 忽略模式中的空白,格式清晰
    
    /m 令 ^ 和 $ 匹配随后嵌入的 
    。
    
    [oracle@jhoa 2]$ cat 5.pl 
    $var="abc
    ABC
    abc";
    if ($var =~ s/c$/Z/g){print "$var
    "};
    
    [oracle@jhoa 2]$ perl 5.pl 
    abc
    ABC
    abZ
    
    不当做多行处理
    
    [oracle@jhoa 2]$ cat 5.pl 
    $var="abc
    ABC
    abc";
    if ($var =~ s/c$/Z/mg){print "$var
    "};
    
    [oracle@jhoa 2]$ perl 5.pl 
    abZ
    ABC
    abZ
    
    当成多行处理 

  • 相关阅读:
    学习DButils笔记
    ubuntu16.04 backup and restore
    Oracle 中 编写 function 和 procedure 的注意事项
    利用反射和JDBC元数据实现更加通用的查询方法
    Memcached
    HTML, CSS
    day35作业
    day34作业
    MySQL数据库
    并发编程
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351974.html
Copyright © 2011-2022 走看看