比方說一個有一個字符串,如這一個:如何編寫搜索動態數量對的正則表達式?
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