2011-01-25 18 views
48

XMLから「7+」または「5+」または「+5」を受け取って、Regexを使用して文字列から数値を抽出したいとします。 例えばRegex.Match()関数文字列からだけNUMBERを取得するRegex

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

答えて

61

\d+

\dは任意の数字、一つ以上のために+を表します。負の数を捕まえたい場合は、-?\d+を使うことができます。あなただけの一桁が必要な場合は、文字列として、それは"\\d+"としてC#で表現されるべきであること

注、または@"\d+"

4

どちらか[0-9]または \dで十分です。さらに必要な場合は、+を追加してください。


1の意味は、潜在的に桁を使用してそこに任意のスクリプトで任意の小数点以下の数字が一致する\dと若干異なります。

+0

イム良くないので.... Regex.Match機能で使用するために、正確な正規表現を定義してくださいRegex(SYNTAX) –

+0

一桁の場合、正規表現は必要ありません: 'char digit = s.First(Char.IsDigit);'。私はそれを私の答えに加えたいが、私はそれがここの場合だとは思わない。 – Kobi

+0

@ Kobi:それでも文字列に対して明示的な反復が必要です。正規表現を使用することを選択したほとんどの人はこれをしたくないでしょう:-) – Joey

80

上記の回答は素晴らしいです。あなたは、非連続している文字列のうち、すべての数字を解析を必要としている場合は、次のようにいくつかの助けになることがあります。

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

私はこの答えに合っています - 作品! – peterincumbria

関連する問題