2010-11-30 2 views
0

q =와 그 이전을 포함하여 모든 것을 제거하고 다음을 포함하는 & ct를 포함하는 정규식을 찾으십시오.구글 알리미 URL을 청소하기위한 정규식

http://www.google.com/url?sa=X&q=http://www-possible-spam-link-com/foo-bar-foo-bar-foo-bar-foo-1-ea-from-foo.html&ct=ga&cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1289126539:&cd=bar&usg=foo

+1

예상되는 결과의 예를 제공 할 수 있습니까 – ant

+1

어제 삭제 된 질문과 정확히 같은 질문입니까? – Piskvor

답변

1
>>> re.match(r'http://.*?q=([^&]*).*?', url).group(1) 
'http://www.foo.com/bar-foo-bar-foo-bar-foo-bar-1-ea-from-foo.html' 

당신은 아마 또한 어떤는 & 또는 20 %로 엔티티를 탈출 경우 URL을 디코딩해야합니다. 이것은 언어에 의존합니다. PHP

preg_match('/^http:\\/\\/.*?q=([^&]*)/', $url, $matches); 
print($matches[1]); 
+0

예상 출력은 http://www.my-sample-domain.com/buy-cheap-inner-traditions-addiction-free-naturally-1-ea-from-herbalremedies.html – user525314

+0

예, 이것은 같은 질문입니다. 어제처럼, 나는 어제 등록하지 않았다. 그리고 지금 나는 그것을 발견 할 수 없다 ... – user525314

+0

@marcog, 당신의 대답에 감사한다, 나는 gskinner.com과 http : //.*에서 그것을 테스트했다. q = ([ &] *). *? http://www.google.com/url?sa=X & q = http : //www.discountproductshop.com/buy-cheap-inner-traditions-addiction-free-naturally-1-ea-from-herbalremedies를 반환합니다. .html – user525314

1

마르코에서

, 그는 backnames (라는 이름의 그룹을)를 사용할 수 없습니다?

당신은 표준 정규식 방언 그룹에 대한 backnames을 지정할 수 있습니다 http://www.regular-expressions.info/named.html

이 절은 말합니다 :

파이썬의 하위() 함수는 \ 1 \ g으로 참조 명명 된 그룹을 수행 할 수 있습니다 . PHP에서는 작동하지 않습니다. PHP에서 은 큰 따옴표 붙은 문자열 보간을 $ regs 매개 변수 으로 사용하여 pcre_match()에 전달할 수 있습니다. $ regs [ 'name'].

/^http:\/\/.?q=([^ &])이이 작동/

:

/^ HTTP

그래서이 원본입니다 : \/\ /.? q = (\ g : [&])/

의미가 있습니까?

+0

명명 된 그룹은 정규식/교체 대상의 참조 용입니다. 이것은 여기 도움이되지 않습니다. OP가 직면하는 문제는 그가 원하는 부분에만 일치하는 preg_match에 전달할 수있는 정규식이 필요하다는 것입니다. 그가 필요로하는 것은 ~ http : \/\ /.? q = 부분과 일치하되 일치하지 않는 부분입니다. – marcog