2009-10-26 7 views
0

.NET 정규식에 대한 질문이 있습니다..NET 정규 표현식에서 번호를 찾고 번호를 그룹화하십시오.

는 지금은 문자열에 숫자가있을 수 있습니다, 목록에 여러 개의 문자열을 가지고 있고, 문자열의 나머지 부분은 그냥 결과가 {"var$i" , "array[$i]"}입니다 원하는

string[] strings = {"var1", "var2", "var3", "array[0]", "array[1]", "array[2]"} 

처럼, 동일, 나는이 수가 사전

var$i {1,2,3} & 
array[$i] {0, 1 ,2} 

같은 유사한 레코드 수의 레코드 I이

var numberReg = new Regex(@".*(<number>\d+).*"); 
foreach(string str in strings){ 
    var matchResult = numberReg.Match(name); 
    if(matchResult.success){ 
    var number = matchResult.Groups["number"].ToString(); 
    //blablabla 
같은 정규식을 규정

하지만 정규식 여기에 작동하지 않을 것 (성공과 일치하지 않는 것), 나는 정규식에서 새로운 오전, 나는이 문제를 최대한 빨리 해결할 싶습니다.

+0

그런데, C# 정규식 같은 건 없어요. C#은 프로그래밍 언어입니다. 프레임 워크는 .NET이며 정규 표현식을 사용합니다. –

+0

정규 표현식을 작성하는 방법을 배우고 표현을 쉽게 만들 수있는 훌륭한 도구 인 '조정자'를 살펴보아야합니다. –

답변

1

은 정규식으로 이것을보십시오 : 정확히 당신이 원하는 것을 나에게 분명하지 않다

(?<number>\d+) 
1

. 그러나 코드를 살펴보면서, 나는 당신이 어떻게 든 당신의 값 목록에서 숫자 (그리고 아마도 변수 이름)를 추출해야만한다고 가정합니다. 이것을 시도하십시오 :

// values 
string[] myStrings = { "var1", "var2", "var3", "array[0]", "array[1]", "array[2]" }; 

// matches 
Regex x = new Regex(@"(?<pre>\w*)(?<number>\d+)(?<post>\w*)"); 
MatchCollection matches = x.Matches(String.Join(",", myStrings)); 

// get the numbers 
foreach (Match m in matches) 
{ 
    string number = m.Groups["number"].Value;     
    ... 
}