c# - 根据键提取另一个方括号内方括号内的值

标签 c# regex

我有一个如下所示的数据,我需要从那里按键提取数据。

string filter=[[LUB,=,COMMERCIAL],AND,[Pgm,=,PRIVATE],AND,[Regn,=,Rasna],AND,[Month,=,06],AND,[Year,=,2018],AND,[Bywhat,=,M]]

我检查了类似的情况,只能得到下面的代码,它没有给出基于键的结果

我试过了

Regex.Match(filter, @"\[(.*?)\]") 

如果我给Regn,我需要得到Rasna

如果我给 LUB,它应该给 COMMERCIAL 之类的

最佳答案

尝试以下操作:

            string filter="[[LUB,=,COMMERCIAL],AND,[Pgm,=,PRIVATE],AND,[Regn,=,Rasna],AND,[Month,=,06],AND,[Year,=,2018],AND,[Bywhat,=,M]]";

            string pattern = @"\[(?'key'\w+),=,(?'value'[^\]]+)";

            MatchCollection matches = Regex.Matches(filter, pattern);

            foreach (Match match in matches.Cast<Match>())
            {
                Console.WriteLine("Key : '{0}', Value : '{1}'", match.Groups["key"].Value, match.Groups["value"].Value);
            }
            Console.ReadLine();
            Dictionary<string, string> dict = matches.Cast<Match>().GroupBy(x => x.Groups["key"].Value, y => y.Groups["value"].Value)
               .ToDictionary(x => x.Key, y => y.FirstOrDefault());

关于c# - 根据键提取另一个方括号内方括号内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56398389/

相关文章:

arrays - 在每个点处分割字符串,除非出现某个单词

c++ - 正则表达式匹配数字的重复模式,后跟任何类型的定界符?

regex - 重写正则表达式而不使用否定

c# - .NET 中有 XML 表单生成器吗?

c# - 取消 CancellationToken 是否会导致 CancellationToken 异常?

javascript - javascript 中的正则表达式正则表达式模式用于带逗号的输入

java - java字符串替换效率

c# - 封闭的 XML。 Workbook.Save() 时内存泄漏

c# - 组合框边框样式

c# - 仅传递字符串数组时,为什么编译器会因为非常量表达式而报错