2011-01-25 5 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] 또는 1\d은 충분합니다. 더 많은 정보가 필요하면 +을 붙이십시오. \d 잠재적 밖에 십진수를 사용하는 모든 스크립트 임의 진수 일치로


1 의미가 약간 다르다.

+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

관련 문제