2016-11-24 2 views
2

아래의 preg_match는 와일드 카드와 '빈'(0 문자)을 일치시킵니다. 나는 그것을 사용하지 않을 :preg_match 와일드 카드, 적어도 하나의 문자가 필요함

preg_match('/site.com\/subsection\/.*?/', $page_url); 

그래서 위의 것은 site.com/subsection/subpage 일치해야하지만 일치하지 말아야 루트 디렉토리 site.com/subsection/ 나는를 조정할 수있는 방법

위의 정규식? 미리 감사드립니다!

+2

시도'/site\.com\/subsection \ /.+/ ' –

답변

4

패턴 끝에있는 .*?은 빈 문자열과 일치합니다. 당신은 .+를 사용하여 하나 이상의 문자와 일치 할 필요가 :

'/site\.com\/subsection\/.+/' 
         ^

지금, 그것은 site.com/subsection/ 후 최소 1 문자가 필요합니다.

도트는 리터럴 점과 일치하도록 이스케이프해야합니다.

또한, (OcuS 아래 comments에서 알 수 있듯이)는 패턴 자체에 많은 슬래시가있는 경우 / 이외의 정규식 구분 기호를 사용하는 것이 좋습니다 수 있습니다.

'~site\.com/subsection/.+~' 
+0

가 작동하는 것 같다가, 감사': 나는 보통 물결표를 사용! 허용되면 답변을 수락합니다. – dirk

+1

그리고'/'대신 다른 구분자를 사용하여 문자를 저장하십시오. '@site \ .com/subsection /[email protected]'과 같은 것입니다. 또한 IMHO라는 가독성이 추가되었습니다. – OcuS