从Querystring向字典中添加匹配的字符串项

本文关键字:字符串 添加 Querystring 字典 | 更新日期: 2023-09-27 18:09:38

从Querystring中添加匹配项到字典

myQuery = "RecordFiles/findrecords/$filter=userid eq 8w4W4E and recordid eq 1catf2deb-4wdx-450c-97cd-6rre331d4a6ec";

string myregexqueryppattern = @"^(RecordFiles/findrecords/'$filter=userid eq)'s(?<userid>'S+)(('s(and recordid eq)'s(?<recordid>'w+))|())";

 Dictionary<string, string> dataDictionary;
            Regex myregx = new Regex(myRegexQueryPattern, RegexOptions.IgnoreCase);
            bool status= AddToDictionary(myQuery, myregx, out dataDictionary);

但是当我运行这段代码时,我只得到recordid的第一部分,并跳过其余部分。

实际结果

recordid = 1 catf2deb

预期结果这里我的字典应该包含

recordid = 1 catf2deb - 4 wdx - 450 - c - 97 cd - 6 - rre331d4a6ec

有人能帮我得到预期的结果吗?我的代码的哪一部分是错误的,我如何纠正我的代码,以获得预期的结果

 public static bool AddToDictionary(string query, Regex regex, out Dictionary<string, string> data)
        {
            Match match = regex.Match(query);
            bool status = false;
            string[] groupNames = regex.GetGroupNames();
            data = new Dictionary<string, string>();
            if (match.Success)
            {
                foreach (var groupName in groupNames)
                {
                    data.Add(groupName, match.Groups[groupName].Value);
                }
                status = true;
            }
            return status;
        }

从Querystring向字典中添加匹配的字符串项

在您的regexp

的这一部分
(?<recordid>'w+)

您使用"'w"匹配所有单词字符,字符"-"不是其中的一部分。

如果您将其编辑为

(?<recordid>'S+)
or even
(?<recordid>['w-]+) if you can only allow 'w or -

我相信你将能够获得你想要的价值。

在未来,对于Regexp测试,我建议使用Regexp。它可以用于桌面,也可以作为一个在线应用程序,直观地告诉您RegEx何时通过/不通过。