C# 中的正则表达式组

Posted

技术标签:

【中文标题】C# 中的正则表达式组【英文标题】:RegEx groups in C# 【发布时间】:2011-11-03 12:32:35 【问题描述】:

我有包含产品信息的字符串,我想解析该字符串并读取产品信息。

我的字符串如下所示:

ID: 1
NAME: Product name
INFORMATION: Here goes the information about a product 
STATUS: Available

我想这样解析这段文字:

string id = product id;
string name = product name;
string info = product information; 
string available = product availability; 

我怎样才能做到这一点。我知道团体是可能的,但我被困住了,不知道该怎么做。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以很容易地解析数据,例如,将其解析为字典。 请注意,您在这里并不真的需要正则表达式,如果没有正则表达式会更好:

var values  = data.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
                  .Select(line => line.Split(":".ToCharArray(), 2))
                  .ToDictionary(pair => pair[0], pair => pair[1], 
                                StringComparer.OrdinalIgnoreCase);
string name = values["name"];

一个正则表达式选项,带有一些空间修剪:

var values = Regex.Matches(data, @"^(?<Key>\w+)\s*:\s*(?<Value>.*?)\s*$", RegexOptions.Multiline)
                  .Cast<Match>()
                  .ToDictionary(m => m.Groups["Key"].Value,
                                m => m.Groups["Value"].Value,
                                StringComparer.OrdinalIgnoreCase);

【讨论】:

我想知道信息是否在字符串数组中。这种分裂将如何运作?有什么想法吗?

以上是关于C# 中的正则表达式组的主要内容,如果未能解决你的问题,请参考以下文章

C#:正则表达式不匹配一组单词

c# 正则表达式捕获

正则表达式:匹配多个平衡组

.NET 正则表达式中的“组”和“捕获”有啥区别?

正则表达式在 C# 中按组替换

正则表达式 c# 获取捕获组的子组