Chinaunix
标题:
Perl 截取需要字符串
[打印本页]
作者:
刚子在学习
时间:
2015-11-12 08:51
标题:
Perl 截取需要字符串
我想从一个文件目录中截取文件名称 但是试了好多办法都没有成功,
从/appdata/appuser/liuyong/date/hubei.xlsx 中截取 hubei这个名称
我的方法是:
my $name = (split /\s+$\/\s+|\s+\./, $path)[1];
print $name,"\n";
if ($path =~ /\/\s+([\d\.]+)/)
{
print $1,"\n";
}
但是截取不出来
问问各位有什么好的办法没?
作者:
jason680
时间:
2015-11-12 09:02
回复
1#
刚子在学习
掐头去尾
use strict;
use warnings;
my $path = "
/appdata/appuser/liuyong/date
/
hubei
.
xlsx
";
my $name = $path;
$name =~ s|
.*
/
||;
$name =~ s/
[.]
.*
//;
print "$name\n";
作者:
刚子在学习
时间:
2015-11-12 09:40
回复
2#
jason680
嗯 这样就简单多了!我开始是陷入一个思维误区,就想着一次将需要的东西截取出来,结果复杂了,
分两次截取就简单多了 ,谢谢了!
作者:
zhlong8
时间:
2015-11-12 09:53
Perl 自带的模块 File::Basename 也很合适
http://perldoc.perl.org/File/Basename.html
作者:
koler
时间:
2015-11-13 15:04
这样也可以。
use strict;
my $aa ="/appdata/appuser/liuyong/date/hubei.xlsx";
$aa =~ /(.*)\/(\w+).\w+$/ ;
print $2;
作者:
sunzhiguolu
时间:
2015-11-13 16:11
本帖最后由 sunzhiguolu 于 2015-11-13 16:18 编辑
#!/usr/bin/perl
use strict;
use warnings;
my $sPath = "/appdata/appuser/liuyong/date/hubei.xlsx";
$sPath =~ m{([^/]+)(?=\.)};
print "$1\n";
复制代码
作者:
sunzhiguolu
时间:
2015-11-13 18:29
#!/usr/bin/perl
use strict;
use warnings;
my $sPath = "/appdata/appuser/liuyong/date/hubei.xlsx";
my $sName;
while ($sPath =~ m{(?<=/)([^/.]+)}g){
$sName = $1;
}
print "$sName\n";
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2