ファイルパスから正規表現で色々と取り出す方法

ファイルのコピーでも使ったけど、正規表現で何かを取り出したいときに使いやすいコード。

1
(my $to_dir = $to) =~ s|([^/]*?)$||;

例の場合は、ファイルパスからディレクトリ名を取り出す。 この場合$toは変更されない。 $toの中身が$to_dirにコピーされて、$to_dirに対して置換が実施される。 2行に分けて書いても同じだが、1行で書けるのが便利。

1
2
my $to_dir = $to;
$to_dir =~ s|([^/]*?)$||;

置換の内容は、一番右の「/(スラッシュ)」よりも右側を、空文字列に置き換える(平たく言うと、削除する)。

他にも、ファイル名だけを取り出してみたり、

1
(my $filename = $path) =~ s|^.*/||;

拡張子(ファイル名のピリオド以降)を取り出してみたり、

1
(my $ext = $path) =~ s/^.*.//;

してみる。

Comments

comments powered by Disqus