Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式命名组:好还是坏?_C#_.net_Regex - Fatal编程技术网

C# 正则表达式命名组:好还是坏?

C# 正则表达式命名组:好还是坏?,c#,.net,regex,C#,.net,Regex,如何使用正则表达式在C#中创建具有名称的组,这是一种良好的做法吗 提前感谢。给小组一个标签名: (?<TagName>.*) (?*) 我绝对认为这是一种很好的做法。考虑更改正则表达式时会发生什么。如果使用索引提取数据,则这些组的顺序可能会改变。通过命名它们,您可以准确地指定您认为该组包含的数据,因此这也是一种自我文档的形式。命名捕获组很好,通常使用更简单的正则表达式,使用数字捕获组可能更为精简,这里有一些提示: 正如其他人指出的,语法是(?…) 下面的示例演示了如何创建一个名为

如何使用正则表达式在C#中创建具有名称的组,这是一种良好的做法吗


提前感谢。

给小组一个标签名:

(?<TagName>.*)
(?*)

我绝对认为这是一种很好的做法。考虑更改正则表达式时会发生什么。如果使用索引提取数据,则这些组的顺序可能会改变。通过命名它们,您可以准确地指定您认为该组包含的数据,因此这也是一种自我文档的形式。

命名捕获组很好,通常使用更简单的正则表达式,使用数字捕获组可能更为精简,这里有一些提示:


正如其他人指出的,语法是
(?…)

下面的示例演示了如何创建一个名为
Key
的组和一个名为
Value
的组,这两个组同样重要(但经常被忘记)-如何按名称从结果匹配对象中提取组:

string s = "foo=bar/baz=qux";
Regex regex = new Regex(@"(?<Key>\w+)=(?<Value>\w+)");
foreach (Match match in regex.Matches(s))
{
    Console.WriteLine("Key = {0}, Value = {1}",
        match.Groups["Key"].Value,
        match.Groups["Value"].Value);
}
string s=“foo=bar/baz=qux”;
正则表达式正则表达式=新正则表达式(@“(?\w+)=(?\w+);
foreach(regex.Matches中的匹配)
{
WriteLine(“Key={0},Value={1}”,
匹配。组[“键”]。值,
匹配。组[“值”]。值);
}
我通常不会对非常简单的表达式使用命名组,例如,如果只有一个组


对于包含多个组的复杂正则表达式,最好使用命名组。另一方面,如果正则表达式非常复杂,需要这样做,那么最好看看是否可以用另一种方法解决问题,或者将算法拆分为更小、更简单的步骤。

另一种语法是
(?'TagName.*)
。非常感谢您的回答。我不知道为什么我认为这会很糟糕。非常感谢你的回答和链接。