문제

나는 다음과 같이 보이는 문자열에 대해 .net에서 regex 매칭을 수행하고 있습니다.

1;#Lists/General Discussion/Waffles Win
2;#Lists/General Discussion/Waffles Win/2_.000
3;#Lists/General Discussion/Waffles Win/3_.000

끝 부분에 숫자없이 URL 부분을 일치시켜야하므로 다음과 같이 얻을 수 있습니다.

Lists/General Discussion/Waffles Win

이것이 제가 시도하는 정규식입니다.

(?:\d+;#)(?<url>.+)(?:/\d+_.\d+)*

문제는 마지막 그룹이 미들 그룹 경기의 일부로 포함되어 있다는 것입니다. 나는 또한 끝에 *없이 시도했지만 나머지는 일치하는 첫 번째 문자열만이 시도하지 않았습니다.

멀티 라인 옵션이 활성화되어 있습니다. 어떤 아이디어?

도움이 되었습니까?

해결책

몇 가지 다른 대안 :

@"^\d+;#([^/]+(?:/[^/]+)*?)(?:/\d+_\.\d+)?$"

이것은 가능한 한 적은 경로 세그먼트와 일치하며, 마지막 부분과 줄의 끝이 뒤 따릅니다.

@"^\d+;#([^/]+(?:/(?!\d+_\.\d+$)[^/]+)*)"

이것은 라인 끝에있는 숫자 부분이 아닌 한 가능한 많은 경로 세그먼트와 일치합니다.

@"^\d+;#(.*?)(?:/\d+_\.\d+)?$"

이것은 가능한 한 적은 문자와 일치하고 선택적 마지막 부분과 줄의 끝이 뒤 따릅니다.

다른 팁

당신은 시도 할 수 있습니다

^(\d+;#)([^/]+(/[^\d][^/]*)*)

그리고 두 번째 그룹을 얻으십시오. 첫 번째 그룹은 1;#; 두 번째 그룹은 첫 번째 부분 또는 URL ( /이외의 문자를 포함하는 것으로 가정 된 것으로 가정 한 후 /)로 나눈 다음 /이외의 다른 그룹과 /이외의 다른 항목과 일치합니다.

테스트 이 지역, 당신이 원하는 것을하는 것처럼 보입니다. 더 많은 샘플을 사용해보십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top