[perl] /区切りのフルパスから、ファイル名部分を抜き出す正規表現を教えてください。
[上に]
[前に]
[次に]
エレガント兄
2000/02/04(金) 15:06:51
正規表現がどうも苦手です。
/home/hoge/file.txt から file.txt を抜き出す正規表現はどうやるのでしょうか?
また、正規表現を完全マスターするのに適した教材はないでしょうか?
コガ
[E-Mail]
[HomePage]
2000/02/04(金) 17:33:28
こんな感じでいいのかな?
$ans = "/home/hoge/file.txt";
$ans =~ s/(.*\/)*//;
私も正規表現は苦手なのですが、ナツメ社のPerlハンドブックを使って
勉強してます。
猫
2000/02/05(土) 00:03:58
$ans = "/home/hoge/file.txt";
($file) = ($ans =~ m|([^/]+)*$|);
教材は無いですけど,いろんなパターンをやるしかないですね.
猫
2000/02/05(土) 00:32:57
うが,削り損ねた(>_<)
($file) = ($ans =~ m|([^/]+)$|);
B-Cus
2000/02/05(土) 07:51:22
s|.*/||; が最近の好みかな。
> 教材
http://www.oreilly.co.jp/BOOK/regex.htm とか。
NANASHI
2000/02/05(土) 11:12:56
$filename=(reverse(split(m#/#,$ENV{SCRIPT_NAME})))[0];
自分はこんな事しています。
これなら確実に最後の/より後だけを抜き出せます。
この場合、
$path='/home/hoge/file.txt';
$filename=(reverse(split(m#/#,$path)))[0];
で、どうでしょう?
NANASHI
2000/02/05(土) 18:07:58
前言修正!
>$filename=(reverse(split(m#/#,$path)))[0];
だと、#の後にスペースがあったときにコメント扱いされてしまうそうなので、
$filename=(reverse(split(m!/!,$path)))[0];
の方がいいかも知れません。
って、自分の意見が一番効率悪いような気が...
[上に]
[前に]
[次に]