我想匹配[和]之间的任何字符串。以下代码工作正常,但我想输出这个符号[]
我的代码:
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);
}
}
答案 0 :(得分:4)
您需要使用Match.Groups属性。由于您已经使用了括号,因此可以使用
获得所需的组MessageBox.Show(mtch.Groups[1].Value);
Groups [0]将包含带[和]的整个字符串。
另外,我认为你的正则表达式可以简化
\[((\s*?.*?)*?)\]
应该相当于
\[(.*?)\]
因为。*会匹配任何东西,包括空格,这就是它所涵盖的内容。
答案 1 :(得分:1)
尝试
MessageBox.Show(mtch.Groups[1].Value);
这将为您提供第一个捕获组的值 - 外部parantheses的内容。