正则表达式匹配方括号 [ 和 ] 中的任何字符串。

4

我希望匹配方括号 [ 和 ] 之间的任何字符串。以下代码运行良好,但是我希望在输出时不包含这些符号 [ ]。

我的代码:

    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);
        }
    }

这个问题也有一个通用解决方案 - undefined
2个回答

5

您需要使用Match.Groups属性。由于您已经在使用括号,因此可以通过以下方式获取所需的组:

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

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

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

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

应该等同于

\[(.*?)\]

由于 .* 可以匹配任何字符,包括空格,这就是 \s 覆盖的内容。


1

尝试

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

这将给你第一个捕获组的值 - 外部括号的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接