1

我知道这听起来可能有点令人困惑,所以我愿意接受有关重命名标题的建议。

基本上我有诸如 C:...\Downloads\Folder\SubFolder\SubSubFolder 之类的字符串。我只想返回 SubFolder 和 SubSubFolder。

到目前为止,我的 Regex 看起来像(?=\\Downloads\\.*?\\).*which matches Downloads\Folder\SubFolder\SubSubFolder

有没有人有任何想法我错过了什么????

以下所有解决方案似乎都有效(除非您不知道“文件夹”)。我用来测试正则表达式的工具可能存在错误。

4

4 回答 4

2

您需要匹配字符串的结尾和非反斜杠序列:

/([^\\]+)\\([^\\]+)$/
于 2012-12-17T23:35:45.113 回答
2

你少了一个<. 你想要一个后视 ( (?<=...)),但你有一个前瞻 ( (?=...))。

换句话说,您需要(?<=\\Downloads\\.*?\\).*.

于 2012-12-17T23:36:38.010 回答
1

这不是正则表达式,但我会这样做。

string marker = @"\Downloads\Folder\";
int i = path.IndexOf(marker);
if (i >= 0)
    return path.Substring(i + marker.Length);
于 2012-12-17T23:28:59.900 回答
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;
于 2012-12-17T23:34:09.810 回答