我想用正则表达式创建一个模式

时间:2013-05-02 20:24:36

标签: c# .net regex winforms

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

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

3 个答案:

答案 0 :(得分: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]+\))

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

为了帮助您进一步查看其中一些网站。一个非常有用的网站是regexlib;他们有一个庞大的正则表达式库。他们也有一个RegEx tester。此外,还有一个非常有用的RegEx工具here