在包含Changeset列的Excel工作表中,我得到的变更集如下:
C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS@@\main\ajsdkljlat\hahdasdhfk\1\test.txt\sub\hsdaklfl\3
我需要在Perl脚本中使用split
函数,这样就会有两个输出(输入为上面的字符串)
C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS
)答案 0 :(得分:6)
对于常规分割来说这听起来太复杂了,你需要像这样的普通正则表达式:
my ($first, $second) = / ^ (.+?) @@ .* (.) $ /x;
答案 1 :(得分:3)
Mark Dominus的Regular Expression Mastery:
兰德尔的规则
- Randal Schwartz(学习Perl的作者 [以及Stack Overflow user]的作者)说:
当您知道要保留的内容时,请使用捕获或
m//g
。当您知道要丢弃的内容时,请使用
split
。
您知道要保留的内容,因此请使用Leon Timmermans's answer中的m//g
。
答案 2 :(得分:2)
我认为这是你想要的,还是你需要一个声明?
my ($before, $after) = split '@@', $input;
my $last_char = substr($after, -1, 1);
答案 3 :(得分:0)
已添加两个答案,您可以仅使用拆分功能尝试以下操作:
$s = 'C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS@@\main\ajsdkljlat\hahdasdhfk\1\test.txt\sub\hsdaklfl\3';
@temp = split/@@/,$s;
$part1 = $temp[0]; # C:\ccviews\hgdasdff-9302\dfcsz\ahgrt\kjhssl\ASGHLS
@temp = split//,$s;
$part2 = $temp[-1]; # 3