完全なファイル パスからファイル名を検索する正規表現を作成しようとしていますが、ディレクトリだけを返すことはできません。たとえば、一致するものが見つからないときにC:\Users\IgneusJotunn\Desktop\file.doc
返される必要がfile.doc
あります。C:\Users\IgneusJotunn\Desktop\folder
これらはすべて Word または Excel ファイルですが、私はそれに依存したくありません。これ:
StringRegExp($string, "[^\\]*\z",1)
最後のスラッシュの後にあるものは何でも見つけますが、ファイルとフォルダーを区別することはできません。これ:
StringRegExp($string, "[^\\]*[dx][ol][cs]\z",1)
ほとんど動作しますが、醜いハックであり、docx または xlsx ファイルが存在する可能性があります。さらに、ファイルはMyNamesDoc.doc
. ピリオドを検索できれば簡単に解決できますが.
、エスケープでは機能しないように見える使用文字 (改行を除く任意の 1 文字を意味します) です。これ:
StringRegExp($ue_string, "[^\\]*\..*\z",1)
最後のバックスラッシュの後に何かを見つけ、ピリオドを含むものだけをキャプチャします。期間を組み込む方法は?または、ファイルを一致させる方法はありますか?
編集:自分の質問に答えました。なぜうまくいかなかったのか、もっとエレガントな解決策があるのか に興味があります。