2017-02-14 2 views
2

예에서 슬래시와 일치하는 키워드 사이의 단어를 찾을 : 나는 위의 URL에서 단어 '대상'을 당기려고정규식 : 홈페이지

http://www.domain.com/junk/target/keyword/junk 

.

(?=\/).*?(?=\/keyword\/) 

그러나이

+0

정규식이 실패한 이유는 '\ /'가 문자열의 첫 번째'/ '와 일치하고'. *?'가 0 개 이상의 문자를 '/ 키워드 /'와 일치시키기 때문입니다. 그것의 길에서 발견되는 모든'/'. '[^ /]'는이 경우 가장 쉬운 해결책이다. –

답변

3

당신은

%r{/([^/]+)/keyword/} 

참조 사용할 수있다 Rubular demo (keyword 문자열의 끝에서 나타날 수있는 경우, 당신은 마지막에 교대를 추가 할 필요가 있습니다 - %r{/([^/]+)/keyword(?:/|\z)}).

당신이 필요로하는 값은 그룹 내에서 1

Ruby demo입니다 :

lnk[%r{/([^/]+)/keyword/}, 1] 

패턴 설명 :

  • / - 슬래시
  • ([^/]+) - 캡처 그룹 1 매칭 하나 이상의 문자 /
  • /keyword/ - 글자 /keyword/ 이외의 부분 문자열.
+1

% r 리터럴을 사용하면 약간 더 쉽게 읽을 수 있습니다. % r {/ ([^ /] +)/keyword /} – Joshua

2

당신은 부정 문자 클래스를 사용할 수있는 최초의 슬래시 ('//www.domain.com/junk/target')에 이르기까지 모든 것을 끌어 : 지금까지 나는 다음과 같은 표현이

[^\/]+(?=\/keyword) 

설명 :

  • 긍정적 예측과 함께- 하나 이상의 문자와 일치하도록 설정된 부정 된 문자
  • (?=\/keyword) - 다음과 일치하는 긍정적 인 미리보기 머리글 /keyword 문자열. 첫 번째 그룹에있을 것입니다

    \/([^\/]+)\/keyword 
    

    문자열 target :

은 물론 당신은 또한 단지 캡처 그룹을 사용할 수 있습니다.