我試圖下面的字符串與正則表達式正則表達式來解析[A] [B]到A和B
[property1=text1][property2=text2]
並分離成一個單獨的行所期望的結果應該是
property1=text1
property2=text2
這裏是我的代碼
string[] attrs = Regex.Split(attr_str, @"\[(.+)\]");
結果不正確,我可能做錯事
UPDATE:採取建議的答覆後。現在它顯示的空間與空字符串
我試圖下面的字符串與正則表達式正則表達式來解析[A] [B]到A和B
[property1=text1][property2=text2]
並分離成一個單獨的行所期望的結果應該是
property1=text1
property2=text2
這裏是我的代碼
string[] attrs = Regex.Split(attr_str, @"\[(.+)\]");
結果不正確,我可能做錯事
UPDATE:採取建議的答覆後。現在它顯示的空間與空字符串
.+
是一個貪婪的匹配,所以它吸引儘可能多的。
選其一
\[([^]]+)\]
或
\[(.+?)\]
在第一種情況下,匹配]
是不允許的,所以 「儘可能」 變短。第二個使用非貪婪的匹配。
你的小點也抓住了大括號。您需要排除大括號:
\[([^]]+)\]
[^]]
匹配除了大括號外的任何字符。
嘗試添加 '懶' 說明:
Regex.Split(attr_str, @"\[(.+?)\]");
嘗試:
var s = "[property1=text1][property2=text2]";
var matches = Regex.Matches(s, @"\[(.+?)\]")
.Cast<Match>()
.Select(m => m.Groups[1].Value);
我們怎樣才能讓它只匹配[XXX]。字符串中沒有[]或[],爲什麼它匹配那些? – codingbiz 2012-07-09 16:23:38