【问题标题】:I would like to make a pattern using regex我想用正则表达式制作一个模式
【发布时间】:2013-05-02 20:24:36
【问题描述】:

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

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

【问题讨论】:

  • 不要简单地说“它不起作用”,而是描述您的预期和实际结果。
  • 好的,我会确保下次这样做,谢谢您的建议:)。

标签: c# .net regex winforms


【解决方案1】:

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

[] - 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]+\))

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

【讨论】:

  • 它有效,非常感谢你的帮助,感谢你让我理解了一些我不太理解的东西。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    为了帮助您进一步查看其中一些网站。一个非常有用的网站是regexlib;他们有一个大型的正则表达式库。他们还有一个RegEx testerhere 还提供了一个非常有用的正则表达式工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 2013-04-03
      • 2021-10-22
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多