예에서 슬래시와 일치하는 키워드 사이의 단어를 찾을 : 나는 위의 URL에서 단어 '대상'을 당기려고정규식 : 홈페이지
http://www.domain.com/junk/target/keyword/junk
.
(?=\/).*?(?=\/keyword\/)
그러나이
예에서 슬래시와 일치하는 키워드 사이의 단어를 찾을 : 나는 위의 URL에서 단어 '대상'을 당기려고정규식 : 홈페이지
http://www.domain.com/junk/target/keyword/junk
.
(?=\/).*?(?=\/keyword\/)
그러나이
당신은
%r{/([^/]+)/keyword/}
참조 사용할 수있다 Rubular demo (keyword
문자열의 끝에서 나타날 수있는 경우, 당신은 마지막에 교대를 추가 할 필요가 있습니다 - %r{/([^/]+)/keyword(?:/|\z)}
).
당신이 필요로하는 값은 그룹 내에서 1
Ruby demo입니다 :
lnk[%r{/([^/]+)/keyword/}, 1]
패턴 설명 :
/
- 슬래시([^/]+)
- 캡처 그룹 1 매칭 하나 이상의 문자 /
/keyword/
- 글자 /keyword/
이외의 부분 문자열.% r 리터럴을 사용하면 약간 더 쉽게 읽을 수 있습니다. % r {/ ([^ /] +)/keyword /} – Joshua
당신은 부정 문자 클래스를 사용할 수있는 최초의 슬래시 ('//www.domain.com/junk/target')에 이르기까지 모든 것을 끌어 : 지금까지 나는 다음과 같은 표현이
[^\/]+(?=\/keyword)
설명 :
(?=\/keyword)
- 다음과 일치하는 긍정적 인 미리보기 머리글 /keyword
문자열. 첫 번째 그룹에있을 것입니다 \/([^\/]+)\/keyword
문자열 target
:
은 물론 당신은 또한 단지 캡처 그룹을 사용할 수 있습니다.
정규식이 실패한 이유는 '\ /'가 문자열의 첫 번째'/ '와 일치하고'. *?'가 0 개 이상의 문자를 '/ 키워드 /'와 일치시키기 때문입니다. 그것의 길에서 발견되는 모든'/'. '[^ /]'는이 경우 가장 쉬운 해결책이다. –