使用perl进行正则表达式匹配时,常用两种匹配模式,一种是贪婪匹配,一种是非贪婪匹配。
贪婪匹配(greedy match):尽可能匹配最长的内容。默认匹配为贪婪匹配。
非贪婪匹配:尽可能少地匹配,也叫做懒惰匹配lazy match。在*,+,?等表示匹配次数的后面加上?就表示以非贪婪模式进行匹配。
my $str = "abc123abc1234";#字符串定义
# greedy match
if(str =~ /a(\w*)3/){
print "$&\n";
}
# lazy match
if(str =~ /a(\w*?)3/){ # *号后的?表示非贪婪匹配/懒惰匹配
print "$&\n"; # &指上一次正则表示式匹配的数据
}
贪婪匹配输出的结果是:bc123abc12。
非贪婪匹配输出的结果是:bc12。
此外,我们在网易云课堂上有各种教学视频,有兴趣可以了解一下:
1. 文章越来越难发?是你没发现新思路,基因家族分析发2-4分文章简单快速,学习链接:基因家族分析实操课程
2. 转录组数据理解不深入?图表看不懂?点击链接学习深入解读数据结果文件,学习链接:转录组(有参)结果解读;转录组(无参)结果解读
3. 转录组数据深入挖掘技能-WGCNA,提升你的文章档次,学习链接:WGCNA-加权基因共表达网络分析
4. 转录组数据怎么挖掘?学习链接:转录组标准分析后的数据挖掘
6. 更多学习内容:linux、perl、R语言画图,更多免费课程请点击以下链接:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!