0

我想检索字符串的最后两列

前任

$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

输出应该是这样的。提前致谢

4

3 回答 3

2

用于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";
}
于 2013-02-12T10:48:38.620 回答
0
$string=~m/.*(\\[^\\]*\\[^\\]*)/g;print $1
于 2013-02-12T12:22:53.607 回答
0

正则表达式似乎是最简单的解决方案

my ($dir) = $path =~ /((?:\\[^\\]+){2})$/;

也就是说,查找反斜杠,后跟一个或多个非反斜杠字符,并在字符串末尾查找此序列两次并捕获它。

请注意,需要在变量周围使用括号来提供正则表达式列表上下文。

示例路径的输出:

\vob\SBI_src
\vob\aims
于 2013-02-12T10:55:12.173 回答