2010-01-01 17 views
2

후행 찾기 위해 나는처럼 보이는 문자열이 : 문자열 숫자 다음에 슬래시가있을 수 있습니다정규식 숫자

www.blah.com/asdf/asdf/asdfasedf/123

위의 예에서/(123) 등을.

문자열에서 123을 추출하고 싶습니다.

내 정규식은 무엇입니까?

+0

이러한 작업을 수행 어디 URL은 어디에서 왔습니까? 수동으로 어딘가에 입력되었거나 HTTP 요청에서 수집 되었습니까? 후행 슬래시가있을 수 있을까요? 숫자가 중간 인 경우 (예 : example.com/123/asdf)? 가장 좋은 답변을 얻으려면 좀 더 많은 사양이 필요합니다 ... 여기 정규식이 필요하지 않을 수도 있습니다. –

답변

4

는 라인의 끝을 의미하는 $로 정규 표현식을 종료 한 후 종료 문자열이 필요합니다.

\/\d+$ 

실제로 번호, 사용 추출하려면 :

int number; 
var match = Regex.Match(inputString,@"\/(\d+)$"); 
if(match.Success) 
    number = int.Parse(match.Groups[1].ToString()); 
+0

또한 구문 분석 오류가 발생하지 않도록 문자열이 비어 있지 않은지 확인해야합니다. – cerkiewny

+0

'Regex.Match'는 예외를 던지지 않을 것이고, 그 뒤에'null'을 검사 할 것입니다. 생각 해보니'match.Success'를 테스트하는 것이 더 정확할 수도 있습니다. 내 대답을 편집했습니다. –

+0

네, 매치가 null이되어서는 안됩니다. 일치하는 것이 없어도 일치가 설정되어 성공하면 false가되고, null을 사용하면 일치하는 그룹이없는 경우에도 코드가 실행됩니다. – cerkiewny

4

당신은 단순히 숫자의 그룹 (\ D +)와 일치하고

(\d+)$ 
3

이 숫자 문자열의 끝에 숫자 뒤에 슬래시를 일치 캡처 :

\/(\d*)$ 
+0

고마워, 그게 내가 생각해 낸거야.하지만 슬래시가 경기의 일부로 보인다. – mrblah

+0

'슬래시로 시작될 수 있습니다'라고 말하면 슬래시는 정규 표현식의 일부가되어서는 안됩니다! – naivists

+0

내가 준 예제에서 슬래시는 캡처 괄호 외부에 있으므로 캡처 그룹에 포함되지 않습니다. 선행 슬래시는 없든 상관하지 않으면 생략 할 수 있습니다. 귀하의 예는 슬래시가 먼저 나오지만 슬래시가 선택 사항이라면 그냥 두십시오. – mopoke