我想製作一個正則表達式模式,我想製作一個模式來獲取括號內的值,我試過這個但不工作。我想用正則表達式來製作一個模式
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