2015-01-15 1 views
0

나는 정규식 정규식을 작성하려고 노력하고있다.URL 일치 정규식 작성

다음 URL이 있습니다. 나는 2 경기,

1st : last word between/and/before get/ 
2nd : string which is start with get/ 

URL의 이러한

http://localhost/akasia/yacht-technical-services/요트 승무원/GET/gulets/대한/판매/ 여기

내가 필요 "요트 승무원"등이있다 필요 그리고 "GET/gulets/대한/판매 /"

http://localhost/akasia/평가/GET/월 toryachts/대한/판매/여기

내가/위해/판매/않은 motoryachts/여기

http://localhost/akasia/may/be/lots/of/seperator/but/ineed/마지막/GET/선박 /에/임대/

"평가"를 필요로하고 얻을 나는

내가 함께 제 2 부분을 잡을/위해/임대/선박/"마지막"필요 얻을

(. ((/ 얻을.를)?))

하지만 첫 번째 부분에 대한 운이 없습니다.

누군가가 도움을 주시면 감사하겠습니다.

감사 니즈 내가 PHP를 가정하고

답변

0

나는 다음과 같은 제안 :

([^\/]+?)\/(get\/.+) 

https://regex101.com/r/uN6yH3/1

개념은 단어 뒤에 첫 번째 슬래시 (비 욕심)까지 비 슬래시 문자와 일치한다는 것입니다 그것을 "그룹화"하고 두 번째 그룹으로 나머지를 잡아라.

+0

정말 고마워요! 고맙습니다. 그것은 내가 원하는 방식으로 exacly 작업하고 있습니다. 나는 wordpress로 페이지 이름을 잡을 수 없었다. 하지만 정규 표현식은 훌륭합니다. 나는 틀린 것을 이해하지 못한다. –

+0

이 문제를 해결할 수 있도록 도와 주시겠습니까?http://stackoverflow.com/questions/27981710 –

+0

@DenizPorsuk 죄송합니다. 시간이 지나면 표시되지 않았습니다. 두 번째 질문에 대한 답이 나오면 다행입니다. –

0

.

$path = parse_url($url,PHP_URL_PATH); 
$s = strrpos($path,'/'); 
$matches[] = substr($path,$s+1); 
+0

@Misundestood 감사드립니다. 하지만 정규식에서 이것을 포착해야합니다. add_rewrite_rule ('(.?. +?) (/ [0-9] +)? /? (. *// get /(.*)?))'), 'index.php? pagename' = $ matches [1] & page = $ matches [2] & get = $ matches [3] ','top '); –

+0

나는 늙었 어, 처음에 네가 한 일을 보지 못했다. 너는 이미 그 URL을 가지고 있다고 생각했다. 그리고 URL이 모두 매우 일관성이 있다는 것을 깨닫지 못했습니다. 나는 대개 더 빠르고 정규 표현식을 디버깅 할 필요가 없기 때문에 정규 표현식 대신 strpos를 사용합니다. Regex는 근사한 코드를 만들지 만 복잡성이 증가함에 따라 실행 시간도 늘어납니다. – Misunderstood

+0

그걸로 내가 aggree. strpos를 사용하면 정규식보다 낫습니다. 하지만이 경우 wordpress는 strpos를 사용할 수 없습니다. –