2011-01-25 37 views
48

我從XML中接收「7+」或「5+」或「+5」,並且只想使用正則表達式從字符串中提取數字。 e.g Regex.Match()函數正則表達式只能從字符串中獲得NUMBER

 stringThatHaveCharacters = stringThatHaveCharacters.Trim(); 
     Match m = Regex.Match(stringThatHaveCharacters, "WHAT I USE HERE"); 
     int number = Convert.ToInt32(m.Value); 
     return number; 

回答

61

\d+

\d表示任何位數,+爲一個或多個。如果你想要捕獲負數,你可以使用-?\d+

注意,作爲一個字符串,它應該在C#中表示爲"\\d+",或@"\d+"

4

無論[0-9]\d 就足夠了,如果你只需要一個單一的數字。如果您需要更多,請追加+


1語義略有不同作爲\d潛在匹配任何腳本任何十進制數,在那裏,採用十進制數字。

+0

請準確定義正則表達式中Regex.Match功能使用....因爲我不是好在正則表達式(SYNTAX) – 2011-01-25 10:21:20

+0

對於一個數字你不需要一個正則表達式:`char digit = s.First(Char.IsDigit);`。我會在我的答案中加上這一點,但我認爲這不是這種情況。 – Kobi 2011-01-25 10:25:27

80

上面的答案很好。如果您需要解析的所有號碼的開出一串的是不連續的,然後下面可能會有所幫助:

string input = "1-205-330-2342"; 
string result = Regex.Replace(input, @"[^\d]", ""); 
Console.WriteLine(result); // >> 12053302342