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

我的代码:

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

最佳答案

您需要使用 Match.Groups 属性。由于您已经在使用括号,因此您可以获得所需的组

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

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

另外,我认为您的正则表达式可以简化
\[((\s*?.*?)*?)\]

应该相当于
\[(.*?)\]

因为 .* 将匹配任何内容,包括空格,这是\s 涵盖的内容。

关于c# - 正则表达式匹配 [ 和 ] 之间的任何字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3642285/

10-13 06:07