我想检索字符串的最后两列
前任
$path = C:\Documents and Settings\ac62599\AC62599_SBI_Release_2012.12.1_int\vob\SBI_src
$path = C:\views\ac62599\AC62599_view\vob\aims
output should be
\vob\SBI_src
\vob\aims
输出应该是这样的。提前致谢
用于split
将路径拆分为目录。您可以使用切片来获取最后两个,然后使用join
将它们连接回来:
for my $path ('C:\Documents and Settings\ac62599\AC62599_SBI_Release_2012.12.1_int\vob\SBI_src',
'C:\views\ac62599\AC62599_view\vob\aims') {
print '\\', join('\\', (split/\\/, $path)[-2, -1]), "\n";
}
$string=~m/.*(\\[^\\]*\\[^\\]*)/g;print $1
正则表达式似乎是最简单的解决方案
my ($dir) = $path =~ /((?:\\[^\\]+){2})$/;
也就是说,查找反斜杠,后跟一个或多个非反斜杠字符,并在字符串末尾查找此序列两次并捕获它。
请注意,需要在变量周围使用括号来提供正则表达式列表上下文。
示例路径的输出:
\vob\SBI_src
\vob\aims