gpt4 book ai didi

.net - 正则表达式(.NET 方言): strange behaviour of a capturing group

转载 作者:行者123 更新时间:2023-12-02 15:09:33 25 4
gpt4 key购买 nike

我被困住了。为什么此代码中的组 path 的值为 2/3/4,而不是 1/2/3/41/ 去哪儿了?表达式的哪一部分匹配 1/

var re = new Regex(@"^-/?(?'folder'((?'path'.+?)/)??[^/]*)/?$");
var m = re.Match("-1/2/3/4/5");
m.Groups["folder"].Value.Dump("Folder");
m.Groups["path"].Value.Dump("Path");

最佳答案

看起来这是 .NET 3.5 和 4.0 之间的行为差​​异。这是一个完整的程序:

using System;
using System.Text.RegularExpressions;

class Test
{
static void Main()
{
var re = new Regex(@"^-/?(?'folder'((?'path'.+?)/)??[^/]*)/?$");
var m = re.Match("-1/2/3/4/5");
Console.WriteLine("Folder: " + m.Groups["folder"].Value);
Console.WriteLine("Path: " + m.Groups["path"].Value);
}
}

在.NET 3.5下编译并运行:

Folder: 1/2/3/4/5
Path: 2/3/4

在.NET 4下编译并运行:

Folder: 1/2/3/4/5
Path: 1/2/3/4

我不知道为什么行为会有所不同......

编辑:我对此进行了进一步调查...在 .NET 3.5 下,该组由两个捕获组成:“1”和“2/3/4”。在 .NET 4 下,它是单个捕获“1/2/3/4”。

关于.net - 正则表达式(.NET 方言): strange behaviour of a capturing group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com