正規表現|ファイル名やディレクトリだけをパスから検索する
概要 | Windows | Unix |
---|---|---|
ファイル名だけ検索 | [^\\]+$ | [^/]+$ |
ディレクトリだけ検索 | ^.*\\ | ^.*/ |
特定のディレクトリ以降を検索 | ディレクトリ名.*$ | ディレクトリ名.*$ |
特定のディレクトリより後を検索 | (?<=ディレクトリ名\\).*$ | (?<=ディレクトリ名/).*$ |
特定のディレクトリ以前を検索 | ^.*ディレクトリ名\\ | ^.*ディレクトリ名/ |
特定のディレクトリより前を検索 | .*\\(?=ディレクトリ名) | .*/(?=ディレクトリ名) |
※「以降/以前」「より後/より前」の違いは、指定したディレクトリ名を含めるかどうかです。
ファイルパスの一部にマッチする正規表現です。ファイル名だけ、ディレクトリだけ、特定のディレクトリ以降だけ、特定のディレクトリ以前だけなど。
ファイルのフルパス一覧みたいなテキストを加工するときに便利です。WindowsとUnix系では区切り文字が違うので正規表現も異なることにご注意ください。
正規表現の使用例
例えばこんなテキストがあるとします。
C:\Users\regex\Documents\hoge.txt
C:\Users\regex\Documents\fuga\fuga.txt
C:\Users\regex\Documents\piyo\piyo\piyo.txt
フルパスの羅列からファイル名だけを消す
[^\\]+$
でファイル名だけを検索して空文字で置換すれば、ディレクトリパスだけを抽出できます。
C:\Users\regex\Documents\
C:\Users\regex\Documents\fuga\
C:\Users\regex\Documents\piyo\piyo\
フルパスの羅列からディレクトリだけを消す
^.*\\
でディレクトリだけを検索して空文字で置換すれば、ファイル名だけを抽出できます。
hoge.txt
fuga.txt
piyo.txt
フルパスの羅列から特定のディレクトリ以前だけを消す
^.*Documents\\
で特定ディレクトリまでを検索して空文字で置換すれば、特定ディレクトリより後のパスだけを抽出できます。
hoge.txt
fuga\fuga.txt
piyo\piyo\piyo.txt