2012-11-19 5 views
1

의 말에 나는 URL의 컬렉션을 가지고 있고 내가 필요한 콘텐츠를 필터링하는 정규 표현식을 작성해야합니다.C#을 정규 표현식 "문자열

/데이터/43492-someText /"

/데이터/221,639-anotherText/"

/데이터/116,345-differentText /"

/데이터/6630-boooring/"

/데이터/22,074/2-foo는, 마지막에 "

내가해야 할 무슨 일이 /가없는 문자열 만하다"그래서

/데이터/220742-foo는

내 정규 표현식은 다음과 같습니다 :

@"/data/[0-9]{1,10}-.*""\s" 

참고 : 내 프로젝트의 일부 제한 때문에 문자열 바꾸기로이 작업을 수행하고 싶지 않습니다. 그 (/ 끝나지 않는 문자열)이 유일한 요구 사항 인 경우

+0

어떻게 매핑에 문제 힌트에 사용되는'사항 String.split ('/')' –

답변

4

정규 표현식은 당신이하려는 일에 대해 과잉이라고 생각합니다.

@"/data/[0-9]{1,10}-[^/]+" 
+0

저는 알고 있습니다. 이것은 완벽하게 작동합니다. – Hlavson

+0

+1 –

5

는,이 같은 것을 사용 : 내가 처음에 URL을 필터링하는 욕망으로 질문을 읽어

var desiredUrls = urls.Where(url => !url.EndsWith("/\"")) 

을하지만 난 그것을 할 수있는 방법을 볼 수 있습니다 매핑 질문

var withoutSuffix = urls.Select(url => url.TrimEnd("/\"".ToCharArray()); 
+2

예에 대해 필터링하지 :

어쨌든 당신은 this 같은 것을 사용할 수 있습니다. – Joey

2

당신은 문자열의 끝에서 문자를 제거하는 TrimEnd을 사용할 수

s.TrimEnd('/', '"') 
+0

// 및/또는 ". 아닙니다 /"를 다듬을 것입니다. 물론, 그것은 OP와 잘 될지도 모르지만 ... 난 그냥 nitpicking. –

+1

기술적으로는 그 이상을 수행 할 것입니다. 하지만 실제로 입력이 여러개의 URI 인 경우 마지막에 임의의 문자열 '/'과' "이 없을 것입니다. – Joey

1
당신은 같은 것을 사용할 수

: 후행하지 않고

(/data/[0-9]{1,10}-.+)/ 

그리고 문자열을/것이다 첫 번째 캡처 그룹에 있어야합니다.

관련 문제