2011-09-25 12 views
1

URL에서 제품의 id 값을 추출해야합니다.URL에서 정규식 추출 번호 (포트 번호 제외)

SEO Friendly (URL 라우팅)입니다.

URL이

http://www.example.com/{param0}/{param1}/123/{param2}/{paramN} 

또는 아무 문제가없는 최초의 URL에 대한

http://localhost:6847/{param0}/{param1}/123/{param2}/{paramN} 

수 있습니다. 하지만 두 번째는 123 또는 (ID) < - (정수) 만 추출하고 싶습니다. 그건있을 수 있습니다

나는 내가 숫자 만 추출 할 경우 내가

[0-9]+ 

를 사용할 수 있다는 것을 알고 있지만 방법은 내가 번호를 제외하고 URL의 모든 수치 데이터를 얻을하는 방법을 regengine 말할 수

: 
전에

. i 사용 :

((!:)[0-9]+) 

올바르지 않습니다. 모든 조언은 잘 준비되어 있습니다.

고맙습니다.

답변

1

예제에서 123의 범위에 대한 자세한 정보가 필요합니다. 얼굴에

, (?<!:)[0-9]+은 앞에 NOT 자리의 첫 번째 덩어리를 발견 할 것이다 ':'

편집은 아마 더 정확성을 위해,이 (?<!:\d+)[0-9]+ 더 좋을 것입니다.
.NET에서 가변 길이 표시를 허용하는 경우에주의하십시오 (필자는 그렇게 생각합니다). 보기 숨김 (PCRE) 고정 길이

,이 같은 작동 될 수 있습니다 (?<![:\d])[0-9]+

Edit2가를이 는 .NET 유형 lookbehinds에 대해 생각하면, 위의 정규식은 약간의 변화를 필요로

@ Sanosay-

. (?<!:\d*)[0-9]+이어야합니다. 그 이유는 ' : 1234'이기 때문에, 1은 그 주장을 만족시킬 것입니다.

희망이 있으신가요? 나는에 대한 테스트 케이스를 만든 조건을 만족하는 두 개의 정규 표현식의
@"(?<!:\d*)[0-9]+"
@"(?<![:\d])[0-9]+"
.

ideone의 C# 코드에 대한 링크는 여기 : http://ideone.com/tLn2j

+0

123 개의, 예를 들어 제품의 ID이다 (단 INT). 나는 해결책을 테스트 할 것이다. 나는 그것이 효과가 있다고 생각한다 : – Sanosay

+0

:/작동하지 않는다. (내가 전에 그 솔루션을 테스트했다고 생각합니다). http : // localhost : 14964/rtoz/product/311/Testing : 4964 – Sanosay

+0

수정 된 정규식을 사용하십시오. – sln