2013-05-02 67 views
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); 
} 
+10

不是簡單地說「它不工作」,而是描述您的預期和實際結果。 – 2013-05-02 20:26:01

+0

好的,我會確保下次再做,謝謝你的建議:)。 – 2013-05-02 21:45:05

回答

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

那些+告訴正則表達式來捕獲一個或多個。這將允許任何數字,而不只是一個數字。

+0

它的工作原理非常感謝你的幫助,並感謝你讓我理解了一些我不瞭解的東西。 – 2013-05-02 21:02:32

1

這可能是你正在尋找的模式:

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

你可能已經忘記了括號,括號和「+」是特殊字符。嘗試Regex Planet或其他正則表達式測試人員修改您要查找的模式。

1

爲了幫助您進一步查看一些這些網站。一個非常有用的網站是regexlib;他們有一個正規表達式的大型圖書館。他們也有一個RegEx tester。另外還有一個非常有用的RegEx工具here