0

我想做一个正则表达式模式,我想做一个模式来获取括号内的值,我试过这个但它不起作用。

String input = "(3+4)+5*4";
Match m = Regex.Match(input, @"([(0-9\/\+\-\*0-9)])");
if (m.Success)
{
    String value = m.Groups[1].ToString();
    MessageBox.Show(value);
}
4

3 回答 3

2

您所做的是误解了“类”在正则表达式中的作用。

[] - Denotes a set of characters to match.  This is NOT a pattern.

你需要抓住的是你几乎正确的模式。

(\([0-9][\/\+\-\*][0-9]\))

Capture:
  Open Parenthesis
  Any character in [0-9]
  Any Character in [\/\+\*\-]
  Any Character in [0-9]
  Close Parenthesis

不过,这只会允许一位数字。如果您有任何多位数字,即使是 10 ......这也行不通。现在,如果你把它改成这样:

(\([0-9]+[\/\+\-\*][0-9]+\))

那些+告诉正则表达式捕获One 或 More。这将允许任何数字,而不仅仅是一个数字。

于 2013-05-02T20:36:49.923 回答
1

这可能是您正在寻找的模式:

"\(([0-9]+.?[0-9])\)S*"

您可能忘记了括号、圆括号和“+”是特殊字符。尝试Regex Planet或其他正则表达式测试器来修改您正在寻找的模式。

于 2013-05-02T20:41:45.253 回答
1

为了帮助您进一步检查其中一些网站。一个非常有用的站点是regexlib;他们有一个大型的正则表达式库。他们也有一个RegEx 测试器这里还有一个非常有用的 RegEx 工具。

于 2013-05-02T21:02:11.660 回答