比方说一个有一个字符串,如这一个:如何编写搜索动态数量对的正则表达式?
string txt = "Lore ipsum {{abc|prop1=\"asd\";prop2=\"bcd\";}} asd lore ipsum";
像( “PROP1”, “ASD”),( “prop3”, “BCD” 我想提取 “ABC” 的信息和对)每对使用a;作为分隔符。
EDIT1:(基于MikeB的)代码
啊,越来越接近。我发现了如何解析如下:
string txt = "Lore ipsum {{abc|prop1=\"asd\";prop2=\"http:///www.foo.com?foo=asd\";prop3=\"asd\";prop4=\"asd\";prop5=\"asd\";prop6=\"asd\";}} asd";
Regex r = new Regex("{{(?<single>([a-z0-9]*))\\|((?<pair>([a-z0-9]*=\"[a-z0-9.:/?=]*\";))*)}}", RegexOptions.Singleline | RegexOptions.IgnoreCase);
Match m = r.Match(txt);
if (m.Success)
{
Console.WriteLine(m.Groups["single"].Value);
foreach (Capture cap in m.Groups["pair"].Captures)
{
Console.WriteLine(cap.Value);
}
}
问题1:我该怎么调整正则表达式说“?每个由\分隔的”一对价值只有我说像字符”, ';'等等,但我不认为我想允许任何字符的周围的其他方法将会更加美好
问题2:?我该怎么调整这个表达式工作,在这里这件事
string txt = "Lore ipsum {{abc|prop1=\"asd\";prop2=\"http:///www.foo.com?foo=asd\";prop3=\"asd\";prop4=\"asd\";prop5=\"asd\";prop6=\"asd\";}} asd lore ipsum {{aabc|prop1=\"asd\";prop2=\"http:///www.foo.com?foo=asd\";prop3=\"asd\";prop4=\"asd\";prop5=\"asd\";prop6=\"asd\";}}";
所以我可能会尝试让一组{{...}},并使用正则表达式等?
我更新了我的答案。我认为现在有道理! – MikeB 2010-03-05 21:40:12
确实是垃圾!该正则表达式将匹配任何包含七个字母的字符串 - 所有内容都是可选的。我将它应用于“匹配”一词,并打印出最后五个字母,每行一个。幸运的是,@ MikeB的(编辑过的)答案更有意义。 – 2010-03-05 22:12:01