Мне нужно регулярное выражение, которое может проанализировать следующие пути к файлам примера и вернуть путь, base, ext и num, как показано в следующей таблице.
Это регулярное выражение почти работает, но, к сожалению, оно не работает, когдаимя файла содержит несколько периодов.
^(.*\\)?(.*?)\.(.*?)\.?([0-9]+)?$
input path base ext num
--------------------------- ------------ ---------- ------ ------
c:\temp\00883005.prt.1 c:\temp\ 00883005 prt 1
00883005.prt 00883005 prt
00883005.prt.1 00883005 prt 1
\\data\test\00883005.prt \\data\test\ 00883005 prt
\\data\test\00883005.prt.1 \\data\test\ 00883005 prt 1
00883005.test.prt 00883005.test prt
00883005.test.prt.1 00883005.test prt 1
c:\temp\00883005.test.prt.1 c:\temp\ 00883005.test prt 1
00883005.mp3 00883005 mp3
Вот рабочий код AutoHotkey (спасибо людям ниже):
RegExMatch( filename, "^(.*\\)?(.*?)\.([^\.]*?)\.?(\b[0-9]+)?$", data)
outputdebug % "dir = " data1
outputdebug % "base = " data2
outputdebug % "ext = " data3
outputdebug % "num = " data4