日期:2014-05-19  浏览次数:21018 次

咨询一个获取括号内值的正则表达式写法
刚接触正则表达式不久,还没掌握的很熟。有个小问题比较困扰。
        我有这样的一个句子:阿[打[答案1]阿大[答案2]法所]得[答案   3.]送颠[覆。
        希望能把其中配对的括号内的值都去出来,例如上面这一句希望能获得的是:
1.答案1
2.答案2
3.答案   3.
        我本来是这么写的,string   patern   =   @ "\[(? <item> [\S+\s]{0,})\] ";
        结果只匹配出来一个:打[答案1]阿大[答案2]法所]得[答案   3.
        请问为什么]是从右侧开始找的?如果想达到要求的话,应该如何来写?



------解决方案--------------------
\[[^\[\]]*\]
------解决方案--------------------
@ "\[[^\[\]]*\] " 不知道可以不可以,你可以测试一下。如果不行就等过客来。呵呵~~~
------解决方案--------------------
try

string yourStr = ...................;
MatchCollection mc = Regex.Matches(yourStr, @ "\[(? <item> [^\[\]]*)\] ");
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups[ "item "].Value + "\n ";
}