[regex] URL 줄 끝 또는 “/”문자와 일치하는 정규식

나는이 URL을 , 나는 어떤 그룹을 꺼내 정규 표현식에 일치하도록 노력하고있어. 내가 가진 문제는 URL 이 “/”및 추가 URL 텍스트로 끝나 거나 계속 될 수 있다는 것 입니다. 다음과 같은 URL을 일치시키고 싶습니다.

그러나 다음과 같이 일치하지 마십시오.

그래서 내 최선의 방법은 다음과 같다고 생각했습니다.

/(.+)/(\d{4}-\d{2}-\d{2})-(\d+)[/$]

끝에있는 문자 클래스에는 “/”또는 줄 끝이 포함됩니다. 캐릭터 클래스는 “$”에 만족하지 않는 것 같습니다. 올바른 그룹을 되돌 리면서 이러한 URL을 가장 잘 구별 할 수있는 방법은 무엇입니까?



답변

/(.+)/(\d{4}-\d{2}-\d{2})-(\d+)(/.*)?$

1 차 캡처 그룹 (.+)

.+ 모든 문자와 일치 (줄 종결 자 제외)

  • + 정량 – 사이의 일치 하나무제한 가능주고 다시 여러 번 배 것은, 필요에 따라 (욕심)

2 차 캡처 그룹 (\d{4}-\d{2}-\d{2})

\d{4}숫자와 일치 (같음 [0-9])

  • {4} 수량 자 — 정확히 4 번 일치

-문자 -그대로 일치 (대소 문자 구분)

\d{2}숫자와 일치 (같음 [0-9])

  • {2} 수량 자 — 정확히 2 번 일치

-문자 -그대로 일치 (대소 문자 구분)

\d{2}숫자와 일치 (같음 [0-9])

  • {2} 수량 자 — 정확히 2 번 일치

-문자 -그대로 일치 (대소 문자 구분)

3 차 캡처 그룹 (\d+)

\d+숫자와 일치 (같음 [0-9])

  • + 정량 – 사이의 일치 하나무제한 가능주고 다시 여러 번 배 것은, 필요에 따라 (욕심)

4 차 캡처 그룹 (.*)?

? Quantifier0 번 과 1 번 사이 에서 가능한 한 많이 일치 하며 필요에 따라 돌려줍니다 (욕심).

.*모든 문자와 일치 (줄 종결제외)

  • * Quantifier0 번 과 무제한 시간 사이 를 가능한 한 많이 일치 시켜 필요한만큼 돌려줍니다 (욕심).

$ 문자열 끝의 위치를 ​​주장


답변

/ 또는 내용의 끝을 일치 시키려면 (/|\z)

이는 여러 줄 일치를 사용하지 않는 경우에만 적용됩니다 (즉, 줄 바꿈으로 구분 된 URL 목록이 아닌 단일 URL과 일치하는 경우).

당신이 가지고있는 것의 업데이트 된 버전을 넣으려면 :

/(\S+?)/(\d{4}-\d{2}-\d{2})-(\d+)(/|\z)

나는 \S+?아무것도 및 모든 것을 일치시키는 것이 아니라 공백이 아닌 ( )에 대한 욕심없는 일치로 시작을 변경했습니다 ( .*)


답변

이제 원하는 것을 수행 할 몇 가지 정규식이 있으므로 적절하게 다룹니다.

무엇 언급되지 않은 것은 왜 시도하지 않습니다 일 : 내부 문자 클래스 $(뿐만 아니라 ^, ./) 특별한 의미가 없기 때문에 [/$]일치하는 문자 중 하나 /또는 문자 $대신 정규식을 종료 ( /) 또는 일치 줄 끝 ( $).


답변

Ruby와 Bash에서는 $괄호 안에 사용할 수 있습니다 .

/(\S+?)/(\d{4}-\d{2}-\d{2})-(\d+)(/|$)

(이 솔루션은 Pete Boughton과 유사하지만 문자열의 끝을 의미 하는를 사용하는 $대신 행의 끝을 의미 하는을 사용 \z합니다.)


답변