Regex 正则表达式从可执行文件中提取文件名
我试图仅从一组文件路径中提取文件名,如下所示:Regex 正则表达式从可执行文件中提取文件名,regex,Regex,我试图仅从一组文件路径中提取文件名,如下所示: C:\Program Files\test\test.test.test.test.exe 在这种情况下,仅需要文件名: test.test.test.test 此外,由于文件名稍后将用作变量,因此需要一个命名的捕获组。到目前为止,我已经尝试了以下代码,但它仍然包含.exe: (?<process>[\w-]+\.exe) (?[\w-]+\.exe) 有什么解决办法吗?提前感谢。您只需添加一个。将“.exe”从匹配组中取出。见
C:\Program Files\test\test.test.test.test.exe
在这种情况下,仅需要文件名:
test.test.test.test
此外,由于文件名稍后将用作变量,因此需要一个命名的捕获组。到目前为止,我已经尝试了以下代码,但它仍然包含.exe:
(?<process>[\w-]+\.exe)
(?[\w-]+\.exe)
有什么解决办法吗?提前感谢。您只需添加一个。将“.exe”从匹配组中取出。见工作 正则表达式:
(?[\w\.-]*)\.exe
尝试\\(?[^\]+)\...[^.]+$
说明:
[^\\]+
-匹配\
[^.]+
-匹配中的一个或多个字符
尝试(?[\w\.-]*)\。
它将仅提取具有任何文件名扩展名的文件名您可以匹配到最后一个\
,在组1中捕获除换行1+以外的任何字符,并在字符串末尾匹配.exe
:
^.*\\(?<process>.+)\.exe$
^.\\(?。+)\.exe$
^
字符串的开头
*\
匹配最后一个\
(?。+)
命名捕获组进程
,匹配除换行符以外的任何字符1+次
\.exe
匹配.exe
$
字符串结尾
可能匹配到最后一个反斜杠,并使用捕获组^.\\\\(.*)\.exe$
,但我只需要文件名,不需要扩展名。您的正则表达式仍然包含.exe为什么将文件名字符限制为[\w\.-]
?这个正则表达式接受零长度的名称,比如.exe
,只需从正则表达式中删除.exe,它就可以用于任何扩展文件