我正是下面的字符串。使用Regex如何只提取路径?
"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" %*
正如我所示,包含路径的字符串可能不规则。
答案 0 :(得分:4)
您应该使用System.IO.Path
类中提供的静态方法,而不是使用Regex。
如果你想要没有文件名的路径,你可以这样做:
string myFullPath = @"C:\Python34\py.exe";
string pathOnly = Path.GetDirectoryName(myFullPath);
//pathOnly will be "C:\Python34"
编辑:由于您将在路径之后获得参数,我们可以先得到第一个引用的子字符串:
Regex quotedPattern = new Regex("([\"'])(?:(?=(\\?))\2.)*?\1");
Match matches = quotedPattern.Match(myFullPath);
if(matches.Groups.Count > 0)
{
pathOnly = matches.Captures[0].Value;
pathOnly = Path.GetDirectoryName(pathOnly);
}
正则表达式测试:RegexStorm
答案 1 :(得分:1)
在您的情况下直接在输入上使用<ul>
,抛出异常。您可以使用<!-- here is the part i try to call with another drawer independent of the first, he have to appear when user click on <a> link 2 -->
<div class="drawer2-main drawer2-default">
<nav class=" drawer2-nav" role="navigation" style="transition-timing-function: cubic-bezier(0.1, 0.57, 0.1, 1); -webkit-transition-timing-function: cubic-bezier(0.1, 0.57, 0.1, 1); transition-duration: 0ms; -webkit-transition-duration: 0ms; transform: translate(0px, 0px) translateZ(0px);">
<ul class="drawer2-menu">
<li class="drawer2-menu-item">
<ul class="drawer2-submenu">
<li class="drawer2-submenu-item">
<a href="">Work</a>
</li>
<li class="drawer2-submenu-item">
<a href="">House</a>
</li>
</ul>
</li>
</ul>
,ul
和char name[40];
的组合来尝试此非正则表达式方法:
scanf("%s",name);
答案 2 :(得分:0)
另一种选择是使用Path.GetDirectoryName
和简单的Substring
:
string value = "\"C:\\Python34\\py.exe\" \"%1\" %*";
string path = Path.GetDirectoryName(value.Substring(1, value.IndexOf("\"", 2)-1));
答案 3 :(得分:0)
我想你可以将它概括为足以区分它 来自其他引用的值。
这需要在引用的字符串中至少有\
和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