首页 > 代码库 > 第六章 正则表达式
第六章 正则表达式
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
第六章 正则表达式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。