正则表达式帮助 - 尝试检测字符串或正则表达式 - c#

时间:2015-07-30 00:40:53

标签: c# regex string

我有一个以逗号分隔的字符串列表中的输入,这些字符串可能表示用双引号括起来的普通字符串或正则表达式。

  

" [A-Z] [0-9]",Hello

  

" [A-Z] [0-9]"," [A-Z] [0-9]"

  

你好,你好

因此,基本上正则表达式可以在逗号或字符串两侧的正常字符串上使用双引号括起来的正则表达式的逗号的任一侧。可以通过新行分隔任意数量的这些行,这些行将一次一个地解析。我试图组合正则表达式来匹配双引号内的任何内容,并将其与字符串拆分组合以获得逗号分隔符。

Dictionary<string, string> dic = new Dictionary<string, string>();
foreach line.. ..{
    dic.Add(line Split('\n')
        .Select(x => x.Split(','))
        .ToDictionary(x => x[0], x => x[1])); 
}

所以我认为这解决了逗号和新行的分裂,并将左侧和右侧的词放在字典中的propper键值点。这里的问题是正则表达式可能包含逗号。或新的线条弄乱了分裂。这就是为什么我认为我还需要尝试直接匹配双引号中的内容。有关正则表达式的任何帮助吗?

1 个答案:

答案 0 :(得分:0)

你应该能够使用这样的东西:

(?<val1>".*"|(?:[^,]+)),(?<val2>(?:".*")|(?:[^,]+))

2个值将位于捕获组val1val2

https://regex101.com/r/oL6mQ1/2

正则表达式可用于处理这样的行:

  var dic = new Dictionary<string, string>();

  var re = new Regex("(?<val1>\".*\"|(?:[^,]+)),(?<val2>(?:\".*\")|(?:[^,]+))", 
                     RegexOptions.Compiled);

  var match = re.Match(line);
  var val1 = match.Result("${val1}");
  var val2 = match.Result("${val2}");
  dic[val1] = val2;