正規表現を書くのに苦労しています。
文字列からいくつかの情報を抽出し、その中の特定の部分を特定する必要があります。
すべての部分が必須ではありません。
私の形式は次のORDER_filename.extension(options)
とおりfilename
です。ORDER
extension
options
たとえば、私は持っているかもしれません:
100_Some file name.ext(3)
_Some other file name.ext
300_Folder name
400_Another Folder name(5)
抽出できるはずです:
Order | Filename | extension | options
----------------------------------------------------------
100 | Some file name | ext | 3
(null) | _Some other file name | ext | (null)
300 | Folder name | (null) | (null)
400 | Another Folder name | (null) | 5
2 行目のファイル名にはアンダースコアが含まれています。
私は正規表現ライブラリで少し遊んでいますが、すべての部分を抽出することに成功しませんでした。
私は試した:
^(?<order>[0-9_]+_)?(?<filename>\w+)
: ただし、ファイル名をスペースで分割します^(?<order>[0-9_]+_)?(?<filename>\w+)(\.(?<ext>.+))?
: 拡張子は抽出されません。ファイル名はまだ分割されています。^(?<order>[0-9_]+_)?(?<filename>\w+)(\.(?<ext>.+))?(\((?<options>.+)\))?
: 拡張子もオプションも抽出されません。ファイル名はまだ分割されています。
私が使うべき正しい表現は何ですか?
参考までに、C# の名前付きキャプチャを使用して、これらの値を使用していくつかの作業を行います。