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,它就可以用于任何扩展文件