我想制作一个正则表达式模式,我想制作一个模式来获取括号内的值,我试过这个但不工作。我想用正则表达式来制作一个模式
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);
}
我想制作一个正则表达式模式,我想制作一个模式来获取括号内的值,我试过这个但不工作。我想用正则表达式来制作一个模式
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);
}
你正在做的是错误理解一个“类”在正则表达式中做了什么。
[] - 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]+\))
那些+
告诉正则表达式来捕获一个或多个。这将允许任何数字,而不只是一个数字。
它的工作原理非常感谢你的帮助,并感谢你让我理解了一些我不了解的东西。 – 2013-05-02 21:02:32
为了帮助您进一步查看一些这些网站。一个非常有用的网站是regexlib;他们有一个正规表达式的大型图书馆。他们也有一个RegEx tester。另外还有一个非常有用的RegEx工具here。
不是简单地说“它不工作”,而是描述您的预期和实际结果。 – 2013-05-02 20:26:01
好的,我会确保下次再做,谢谢你的建议:)。 – 2013-05-02 21:45:05