如何根据 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
基于非常有限的输入示例,我不能保证它会可靠地处理你投入其中的所有内容,但它应该会给你一个开始流程的想法
我有字符串
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
基于非常有限的输入示例,我不能保证它会可靠地处理你投入其中的所有内容,但它应该会给你一个开始流程的想法