我知道这听起来有点令人困惑,所以我愿意接受有关重命名标题的建议。
基本上我有C:... \ Downloads \ Folder \ SubFolder \ SubSubFolder等字符串。我想只返回SubFolder和SubSubFolder。
到目前为止,我的正则表达式看起来像(?=\\Downloads\\.*?\\).*
,匹配Downloads\Folder\SubFolder\SubSubFolder
。
有没有人有任何想法我错过了什么????
以下所有解决方案似乎都有效(除非您不知道“文件夹”)。可能是我用来测试正则表达式的工具的错误。
答案 0 :(得分:2)
您需要匹配字符串的结尾和非反斜杠序列:
/([^\\]+)\\([^\\]+)$/
答案 1 :(得分:2)
你错过了一个<
。你需要一个后视((?<=...)
),但你有一个前瞻((?=...)
)。
换句话说,您需要(?<=\\Downloads\\.*?\\).*
。
答案 2 :(得分:1)
这不是正则表达式,但这是我如何做的。
string marker = @"\Downloads\Folder\";
int i = path.IndexOf(marker);
if (i >= 0)
return path.Substring(i + marker.Length);
答案 3 :(得分:1)
以下正则表达式将在正则表达式匹配中返回两个命名组(sub,subsub)。
(?<=\\Downloads\\[^\\]+\\)(?<sub>[^\\]+)\\(?<subsub>[^\\]+)
检索群组:
var regex = new Regex(@"(?<=\\Downloads\\[^\\]+\\)(?<sub>[^\\]+)\\(?<subsub>[^\\]+)");
var match = regex.Match(@"C:\...");
var sub = match.Groups["sub"].Value;
var subsub = match.Groups["subsub"].Value;