2013-08-01 6 views
-3

누구든지 정규 표현식 문제로 저를 도울 수 있는지 알고 싶습니다. 내가 시도regex url 요청을하시기 바랍니다.

www.justin.tv/channel_name_here 

:이 채널이 살아 갈 때

/justin\.tv\/(.*) 

이, 때로는 URL가 변환 내가 얻는 문제가 있음을 나는이 URL과 비슷한 URL을 잡기 위해 정규 표현식을 작성하려면 다음과 같은 내용 :

www.justin.tv/channel_name_here#/w/45365675688 

나는 이것을 잡지 못합니다. .? :(아무도 여기 난 그냥 파운드 기호와 URL의 나머지 부분없이 채널 이름을 잡으려면이 함께

를 좀 도와 주시겠습니까 URL의 예입니다 :

www.justin.tv/winning_movies#/w/6347562128 
http://www.justin.tv/cine_accion_hd16#/w/6347562128/18 
http://www.justin.tv/fox_movies_hd1/ 

내가 원하는 것은 수 :

winning_movies 
cine_accion_hd16 
fox_movies_hd1 

사전에 감사 :)

답변

1

을 짧은 답변 :!

(?<=justin\.tv\/)([^#\/]+) 

긴 답변 :

이 부분을 부분으로 나누어 보겠습니다. 뒷 부분을 먼저보십시오.

([^#\/]+) 

이렇게하면 '#'또는 '/'가 포함되지 않은 부분으로 문자열을 구분할 수 있습니다. 이제 첫 번째 부분을 살펴 보겠습니다.

(?<=justin\.tv\/) 

구문 "(다음? <가 =" ")"이라고 긍정 lookbehind (this page 좋은 예 및 lookaround의 종류에 대한 설명을 갖는다). 간단한 예제를 사용하여 :

(?<=A)B 

위의 예는 "내가 'A'후 즉시 모든 'B'를 원한다."라고 우리의 큰 예를 살펴보면의 바로 뒤에 인 부분 ("# '또는"/ "으로 구분)을"justin.tv/ "라고하는 부분을 원한다고 말하고 있습니다.

작동중인 표현의 예는 here을 참조하십시오.

+0

감사합니다. 내가 찾던 것이 었습니다. 코드를 설명해 주셔서 감사합니다. – carlosmtx

+0

안녕하세요, @carlosmtx. – Xynariz

0
@justin\.tv/([^#/]+)@ 

모든 것을 특정 문자 (-set)로 원하면 부정적인 클래스를 사용하십시오. 또한 URL 정규 표현식에서 작업 할 때 /를 구분 기호로 사용하면 /를 모두 이스케이프해야하므로 오류가 발생하기 쉽습니다. 대신 다른 것을 사용하십시오 (이 경우 @와 같이)

+0

답장을 보내 주셔서 감사합니다. 나는 Xynariz – carlosmtx