2010-11-30 14 views
0

正規表現を検索して、q =とそれ以前を含むすべてを削除し、& ctを次のURLに含めます。Googleアラート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

このセクションでは、こう述べています。

Pythonのサブ()関数は、\ 1や\ gと 参照という名前のグループにあなたを可能に。 これはPHPでは動作しません。 PHPでは、 は$ regsパラメータで二重引用符の文字列 補間を使用できます あなたは pcre_match()に$ regs ['name']にedを渡します。

/^http:\/\/.?q=([^ &])これは働くかもしれ/

/^ HTTP

だからこれはあなたのオリジナルです:\/\ /。?q =(\ g:[^ &])/

それは意味がありますか?

+0

名前のついたグループは、正規表現内での参照用です。これはここでは役に立たない。 OPが直面する問題は、彼が望む部分だけに一致するpreg_matchに渡すことができる正規表現が必要なことです。彼が必要とするのは、合っていれば、http:\/\ /。?q =の部分と一致するものです。 – marcog

関連する問題