我在编写正则表达式时遇到了一些麻烦。
我必须从字符串中提取一些信息并识别其中非常具体的部分。
所有部分都不是强制性的。
我的格式是:ORDER_filename.extension(options)
wherefilename
是强制性的,andORDER
和extension
areoptions
不是。
例如,我可能有:
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
第二行在文件名中有下划线。
我正在玩一些正则表达式库,但我没有成功提取我的所有部分。
我试过了:
^(?<order>[0-9_]+_)?(?<filename>\w+)
: 但它在空间分割文件名^(?<order>[0-9_]+_)?(?<filename>\w+)(\.(?<ext>.+))?
: 没有提取扩展名。文件名仍然是拆分的。^(?<order>[0-9_]+_)?(?<filename>\w+)(\.(?<ext>.+))?(\((?<options>.+)\))?
:既不提取扩展名,也不提取选项。文件名仍然是拆分的。
我应该使用什么正确的表达方式?
仅供参考,我将使用名为 captures 的 C# 来使用这些值完成一些工作。