0

文字列の最後の2列を取得したい

$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パスをディレクトリに分割するために使用します。スライスを使用して最後の2つを取得し、次に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

正規表現が最も簡単な解決策のようです

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

つまり、バックスラッシュを探し、その後に1つ以上のバックスラッシュ以外の文字を探し、文字列の最後でこのシーケンスを2回探して、それをキャプチャします。

正規表現リストのコンテキストを指定するには、変数を括弧で囲む必要があることに注意してください。

サンプルパスの出力:

\vob\SBI_src
\vob\aims
于 2013-02-12T10:55:12.173 に答える
0
$string=~m/.*(\\[^\\]*\\[^\\]*)/g;print $1
于 2013-02-12T12:22:53.607 に答える