【问题标题】:How to split the string and retrieve last two columns in perl如何在perl中拆分字符串并检索最后两列
【发布时间】:2013-01-27 15:24:19
【问题描述】:

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

$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() 和数组访问应该非常简单。你试过什么?
  • 您确定要在结果中使用前导反斜杠吗?这意味着绝对路径 - 即 \vob 位于磁盘卷的根目录。

标签: string perl replace split


【解决方案1】:

使用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";
}

【讨论】:

    【解决方案2】:

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

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

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

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

    示例路径的输出:

    \vob\SBI_src
    \vob\aims
    

    【讨论】:

      【解决方案3】:
      $string=~m/.*(\\[^\\]*\\[^\\]*)/g;print $1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-06
        • 2011-01-28
        • 2010-09-27
        • 2013-11-08
        • 1970-01-01
        • 2013-07-07
        • 1970-01-01
        相关资源
        最近更新 更多