我试图下面的字符串与正则表达式正则表达式来解析[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