c# - 正则表达式:匹配任何文本后跟特定封闭格式的模式

标签 c# regex

我正在尝试找到使用正则表达式从 URL 获取数据的方法,该 URL 是这样构建的:

https://myurl.com/action?AAA={10/17/2018 08:00:00}&BBB={XXX123}&CCC={DATA_DATA}&DDD={29696}&EEE={10/17/2018 08:00:00}&FFF={CCC}&GGG={SOMEINFO}&HHH={7234384}&III={https://www.otherurl.com/Page?utm_source=email&utm_medium=medium}

基本上我希望得到的是一个像这样的字符串列表:

AAA={10/17/2018 08:00:00}&
BBB={XXX123}&
CCC={DATA_DATA}&
DDD={29696}&
EEE={10/17/2018 08:00:00}&
FFF={CCC}&
GGG={SOMEINFO}&
HHH={7234384}&
III={https://www.otherurl.com/Page?utm_source=email&utm_medium=medium}

通过代码,我删除了第一个 URL 部分(https://myurl.com/action?)所以我可以使用类似 Regex.Split 的东西来生成最终列表,但是找不到匹配模式的简单方法,它应该是类似于:

anything={anything}

我试过使用 ".={.}"但没有用,@"/\w+={[]}"也没有任何运气

最佳答案

您可以使用以下方式获得这些匹配项

(\w+)={([^{}]*)}

参见 regex demo .

详情

  • (\w+) - 第 1 组:一个或多个单词字符
  • ={ - ={ 子串
  • ([^{}]*) - 第 2 组:除 {}
  • 之外的任何 0+ 个字符
  • } - } 字符。

C# code example :

var s = "https://myurl.com/action?\nAAA={10/17/2018 08:00:00}&\nBBB={XXX123}&\nCCC={DATA_DATA}&\nDDD={29696}&\nEEE={10/17/2018 08:00:00}&\nFFF={CCC}&\nGGG={SOMEINFO}&\nHHH={7234384}&\nIII={https://www.otherurl.com/Page?utm_source=email&utm_medium=medium}";
var res = Regex.Matches(s, @"(\w+)={([^{}]*)}")
        .Cast<Match>()
        .ToDictionary(
            m => m.Groups[1].Value,
            m => m.Groups[2].Value);
foreach (var kvp in res)
    Console.WriteLine("{0} => {1}", kvp.Key, kvp.Value);

输出:

AAA => 10/17/2018 08:00:00
BBB => XXX123
CCC => DATA_DATA
DDD => 29696
EEE => 10/17/2018 08:00:00
FFF => CCC
GGG => SOMEINFO
HHH => 7234384
III => https://www.otherurl.com/Page?utm_source=email&utm_medium=medium

关于c# - 正则表达式:匹配任何文本后跟特定封闭格式的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52997458/

相关文章:

Java 使用正则表达式匹配多个标记

c# - 如何使用 linq to sql 一次更新多行?

c# - 从具有多个值的公共(public)方法中检索单个值 c#

java - 正则表达式拆分不起作用

regex - 如何否定整个正则表达式?

c# - 我的正则表达式没有返回我需要的内容

c# - asp .net 核心应用程序未在 IE 和 EDGE 中设置响应 cookie,但在 firefox 和 chrome 中运行良好

c# - 在 .net 核心 Web api 和 Angular 6 中启用 CORS

c# - 折叠面板 JavaScript 问题

javascript - 在 javascript 中用于文件路径验证的正则表达式