首页 > 代码库 > 第六章 正则表达式

第六章 正则表达式

1,if匹配

 

 if($regu =~ m/expression/){

 } 

      #正则表达式m可省略,也可使用$_, 即if(/expression/), 相当于$regu = $_; 省略匹配符=~ 和 m

 

2, 匹配+ &&print

 

  if($line=~m" \b(\w+)\b"){print "$l\n";}  
 等同于:($line=~m" \b(\w+)\b")&&(print " $l\n";); 

    #匹配符号可以是任何的," "; # #; ! !; 等, 不同于split(":",$_) , split(/[^0-9]/,$_),双引号不同于//.

 

3.在数组环境下的匹配(无修饰符)

  这会匹配正则表达式能匹配的第一个位置,接着简单地把反向引用放入一个可快速访问的表中。例如:

($variable,$equals,$value) = ($line = ~m" (\w+)\s*(=)\s*(\w+)");

  该代码取到第一个引用(\w+),使之成为$variable;取到第二个引用(=)使之成为$equals;然后取到第三个引用(\w+),使之成为$value。


4.在数组环境下匹配(g修姊符)

  取到正则表达式,尽可能多地应用它.然后把结果放人到由所有可能匹配组成的数组中,

例如:

$line = ‘1.2 3.4 beta 5.66‘;

@matches = ($line =~m" (\d*\.\d+)" g);

  将使@matches等于1.2,3.4,5.66。g修饰符完成迭代,首先匹配1.2,其次是3.4,第三是5.6。

 

部分参考:http://depancao.blog.163.com/blog/static/21025503720127810726692/

 

5.模式中的特殊字符 捕获变量()

  圆括号的作用是对字符进行分组,同时圆括号之间的正则表达式内容都会被捕获,匹配变量依次命名为$1,$2,…;括号有多少对,匹配变量就有多少个。

举例:

my $name = “ID=GL0012;Parent=Scaffold1”;

$name =~ /ID=(\S+);Parent=(\S+);

print “$1\n”; # 输出 GL0012

print “$2\n”; # 输出 Scaffold1

 

第六章 正则表达式