String 使用Perl提取下划线之间字符串的最佳方法
我有点像:String 使用Perl提取下划线之间字符串的最佳方法,string,perl,split,extract,String,Perl,Split,Extract,我有点像: $string = '/mfsi_rpt/files/mfsi/reports/bval/bval_parlcont_pck_m_20130430.pdf'; 我想从字符串(第二和第三下划线之间的单词)中提取parlcont 使用Perl实现这一点的最佳方法是什么?如果您首先使用从文件路径中取出文件名,然后可以使用来取出所需的名称,那就更好了 use strict; use File::Basename; my $string = "/mfsi_rpt/files/mfsi/r
$string = '/mfsi_rpt/files/mfsi/reports/bval/bval_parlcont_pck_m_20130430.pdf';
我想从字符串(第二和第三下划线之间的单词)中提取parlcont
使用Perl实现这一点的最佳方法是什么?如果您首先使用从文件路径中取出文件名,然后可以使用来取出所需的名称,那就更好了
use strict;
use File::Basename;
my $string = "/mfsi_rpt/files/mfsi/reports/bval/bval_parlcont_pck_m_20130430.pdf";
my $data = ( split( /_/, basename($string) ))[1];
输出:
parlcont
通过组合贪婪匹配和非贪婪匹配,并使用捕获括号提取感兴趣的部分,可以将其与正则表达式匹配:
if( $string =~ m:.+/.*?_(.+?)_:) {
print "$1\n";
}
“+/”是一个贪婪的匹配项,它将吞噬所有内容直到最后一个/以通过目录组件
那么“*?”是非贪婪的,所以它会把所有东西都用到第一个_
那么“(.+?)ux”是另一种非贪婪的匹配和捕获下一个_