2017-06-19 63 views
0

我有一个字符串,我想使用分隔符在perl中分割但是在特定位置。 $ Str = d2a_orx_lego_clk 我想要的输出是d2a_orx,即只在第二个下划线后分开。 我试过的代码将字符串分成两部分,但是一开始下划线不在第二个。在特定位置使用分隔符的Perl分割模式

#!/bin/perl 

$str = d2a_orx_lego_clk; 
#print join('_', split(/_/, $str)), "\n"; 
my ($k, $v) = split(/_/, $str, 2); 
print "$k\n"; 
print "$v\n"; 

感谢

+1

嗨@丹尼斯我会解决你的问题与正则表达式;)。请写下你的字符串。 my $ str =“d2a_orx_lego_clk”;我建议使用进口“严格使用;使用警告;” –

+4

'split(/ _ [^ _] + \ K_ /,$ str,2);' –

+0

感谢Patrick和Сухой27,它运行良好。 –

回答

4
my ($k, $v) = $str =~ /^([^_]*_[^_]*)_(.*)/; 

使用正则表达式匹配效果,并且比越来越分裂,做你想做的要容易得多。

0

下面的代码工作正常,它用分隔符'_'拆分字符串,然后用相同的分隔符连接。

#!/bin/perl 
$str = d2a_orx_lego_clk; 
my @string = split(/_/, $str); 
my $str= join '_',$string[0],$string[1]; 
print $str,"\n";