如何根据 2 个字符串的模式匹配查找值

How to find values based on pattern matching from 2 string

我有字符串

a = "{key1}|{key2}_{key3}-{key4}"

我还有一个字符串

b = "abc|qwe_tue-pqr"

我需要输出以获取

的值
key1="abc", key2="qwe", key3="tue" and key4="pqr"

如果用例像介绍的那样简单,您也许可以将 a 转换为具有命名捕获组的正则表达式:

var r = new Regex(Regex.Escape(a).Replace("\{","(?<").Replace("}",">[a-z]+)"));

这会将 a 变成一个正则表达式(需要转义 | 分隔符):

(?<key1>[a-z]+)\|(?<key2>[a-z]+)_(?<key3>[a-z]+)-(?<key4>[a-z]+)

然后您可以获取匹配项并打印它们:

var m = r.Match(b);
foreach(Group g in m.Groups){
  Console.WriteLine(g.Name + "=" + g.Value);
}
key1=abc
key2=qwe
key3=tue
key4=pqr

基于非常有限的输入示例,我不能保证它会可靠地处理你投入其中的所有内容,但它应该会给你一个开始流程的想法