我正好在下面的字符串。使用正则表达式如何仅提取路径?

"C:\Python34\py.exe" "%1" %*


我已经尝试了以下模式:


([a-zA-Z]:[\ [a-zA-Z0-9。]] *)


它给了我整个路径C:\Python34\py.exe


^ [^ \ t] + [\ t] +(。*)$


它给了我整个字符串"C:\Python34\py.exe" "%1" %*

编辑

我知道System.IO命名空间中的选项。但是这里有一个字符串,我需要从中提取路径-> "C:\Python34\py.exe" "%1" %*
如我所示,包含路径的字符串可能不规则。

最佳答案

我想您可以将其概括化以找到足以区分它的方法
从其他引用的值。

这至少需要带引号的字符串中的\file.ext

 "
 # @"""([^""]*)\\([^""\\]+(?:\.[^"".\\]+))"""

 (                    # (1 start), Path
      [^"]*
 )                    # (1 end)
 \\
 (                    # (2 start), File name
      [^"\\]+
      (?:
           \.
           [^".\\]+
      )
 )                    # (2 end)
 "


输出:

 **  Grp 0 -  ( pos 0 , len 22 )
"C:\Python34\py.exe.d"
 **  Grp 1 -  ( pos 1 , len 11 )
C:\Python34
 **  Grp 2 -  ( pos 13 , len 8 )
py.exe.d

08-18 11:09