正则表达式匹配[和]之间的任何字符串

时间:2010-09-04 12:33:01

标签: c#

我想匹配[和]之间的任何字符串。以下代码工作正常,但我想输出这个符号[]

我的代码:

    string strValue = "{test}dfdgf[sms]";// i want to sms

    private void Form1_Load(object sender, EventArgs e)
    {
        Match mtch = Regex.Match(strValue, @"\[((\s*?.*?)*?)\]");
        if (mtch.Success)
        {
            MessageBox.Show(mtch.Value);
        }
    }

2 个答案:

答案 0 :(得分:4)

您需要使用Match.Groups属性。由于您已经使用了括号,因此可以使用

获得所需的组
MessageBox.Show(mtch.Groups[1].Value);

Groups [0]将包含带[和]的整个字符串。

另外,我认为你的正则表达式可以简化

\[((\s*?.*?)*?)\]

应该相当于

\[(.*?)\]

因为。*会匹配任何东西,包括空格,这就是它所涵盖的内容。

答案 1 :(得分:1)

尝试

MessageBox.Show(mtch.Groups[1].Value);

这将为您提供第一个捕获组的值 - 外部parantheses的内容。