C# 如何按特定模式解析字符串并将结果标记到字典中?

C# 如何按特定模式解析字符串并将结果标记到字典中?,c#,C#,我有一个字符串,如下所示: Column1 LIKE 'value1%' AND Column2 LIKE 'value2%' ... ColumnN LIKE 'valueN%' 我需要将字符串标记为字典,如 'Column1', 'value1' 'Column2', 'value2' ... 'ColumnN', 'valueN' 如何结合regex和linq来解析字符串并获得结果字典?似乎可以使用linq来实现这一点,只需适当地拆分字符串: str.Split(new string[

我有一个字符串,如下所示:

Column1 LIKE 'value1%' AND Column2 LIKE 'value2%' ... ColumnN LIKE 'valueN%'
我需要将字符串标记为字典,如

'Column1', 'value1'
'Column2', 'value2'
...
'ColumnN', 'valueN'

如何结合regex和linq来解析字符串并获得结果字典?

似乎可以使用linq来实现这一点,只需适当地拆分字符串:

str.Split(new string[]{" AND "}, StringSplitOptions.RemoveEmptyEntries)
   .Select(likeClause => likeClause.Split(new string[]{" LIKE "}, StringSplitOptions.RemoveEmptyEntries))
   .ToDictionary(a => a[0], a => a[1].Trim(new char[]{'\'', '%'}))

似乎可以使用LINQ实现这一点,只需适当地拆分字符串:

str.Split(new string[]{" AND "}, StringSplitOptions.RemoveEmptyEntries)
   .Select(likeClause => likeClause.Split(new string[]{" LIKE "}, StringSplitOptions.RemoveEmptyEntries))
   .ToDictionary(a => a[0], a => a[1].Trim(new char[]{'\'', '%'}))

您可以使用不带linq的正则表达式,也可以使用不带拆分的正则表达式

    static string test = @"Column1 LIKE 'value1%' AND Column2 LIKE 'value2%'";
    static void Main(string[] args)
    {
        var dict = new Dictionary<string,string>(); 

        foreach (Match m in  Regex.Matches(test,@"(^|AND\s*)(\w*).*?LIKE.*?\'(.*?)%"))
        {
            dict.Add(m.Groups[2].Value, m.Groups[3].Value);
        }
    }
static string test=@“Column1-LIKE'value1%”和Column2-LIKE'value2%”;
静态void Main(字符串[]参数)
{
var dict=新字典();
foreach(在正则表达式中匹配m.Matches(test,@“(^和\s*)(\w*)*?LIKE.*?\”(.*)”)
{
dict.Add(m.Groups[2].Value,m.Groups[3].Value);
}
}

您可以使用不带linq的正则表达式,也可以使用不带拆分的正则表达式

    static string test = @"Column1 LIKE 'value1%' AND Column2 LIKE 'value2%'";
    static void Main(string[] args)
    {
        var dict = new Dictionary<string,string>(); 

        foreach (Match m in  Regex.Matches(test,@"(^|AND\s*)(\w*).*?LIKE.*?\'(.*?)%"))
        {
            dict.Add(m.Groups[2].Value, m.Groups[3].Value);
        }
    }
static string test=@“Column1-LIKE'value1%”和Column2-LIKE'value2%”;
静态void Main(字符串[]参数)
{
var dict=新字典();
foreach(在正则表达式中匹配m.Matches(test,@“(^和\s*)(\w*)*?LIKE.*?\”(.*)”)
{
dict.Add(m.Groups[2].Value,m.Groups[3].Value);
}
}

它是否会从值中删除
%
,以获得问题中描述的结果?@MarcinJuraszek,抱歉,没有对此给予足够的重视。编辑。我在str.split(“AND”)处有一个编译器错误,说它无效arguments@GLP,我总是忘记String.Split没有这样的重载。谢谢,谢谢。它就像一个符咒。它会从值中去除
'
%
,以得到问题中描述的结果吗?@MarcinJuraszek,对不起,没有对此给予足够的重视。编辑。我在str.split(“AND”)处有一个编译器错误,说它无效arguments@GLP,我总是忘记String.Split没有这样的重载。谢谢,谢谢。它就像一个符咒。