2011-08-17 2 views
0

URL과 일치하고 싶지만 URL의 일부만 선택하고 싶습니다. 그게 가능한가?RegEx 도움말, 긴 문자열 일치, 하위 문자열 선택

IE : URL이 다음과 같을 것이다 :

http://www.domain.com/link/88cbdgb7fwndkedl/ 

내 정규식이 너무과 같습니다

@"http://www.domain.com/link/([a-zA-Z0-9]+)/" 

하고 난 단지 ID를 반환 기대했지만, 대신 전체 URL을 잡아 .

제안 사항?

편집 : 사용하여 C#을 Regex.Matches()

+0

어떤 언어? 문제는 정규식이 아니므로 캡처 된 그룹 대신 전체 일치 항목을 사용하는 것일 수 있습니다. – Vache

+0

이 내 대답 – MattoTodd

답변

1
Match match = Regex.Match(input, @"http://www.domain.com/link/([a-zA-Z0-9]+)/") 
string key = match.Groups[1].Value; 
+0

을 편집 했으므로'Group [0]'은 전체 일치하고'Group [1 ... etc etc]'연속 그룹입니까? – MattoTodd

+0

네, 모든 언어에서 거의 동일합니다. –

0

매치하면 해당 그룹을 추출해야합니다 (정규식에 지정된 것)

전체 URL을 것입니다. 같은

뭔가 :

foreach(Match m in matches){ 
m.Groups[1]; 
} 
1

는 거의 모든 정규식 솔루션을 사용하면 그룹을 검색 할 수 있습니다. 당신이 그룹과 귀찮게 할 수없는 경우 당신은 그룹 1

에서 당신을 기다리고 당신의 괄호 부분을 찾을 수 있습니다 당신은 긍정적 인 모습 숨김 사용할 수 있습니다

(?<=http://www.domain.com/link/)[^/]+ 

을하지만 솔직히 ... 시도 그룹을 사용하십시오. 좋은 기능입니다. :-)

C#에서, 그것은이다

Match match = Regex.Match(input, @"http://www.domain.com/link/([a-zA-Z0-9]+)/"); 

if (match.Success) { 
    string key = match.Groups[1].Value; 
}