4
/url?q=http://it.wikipedia.org/wiki/Spider-Man_(film)&sa=U&ei=iavVUKuFGsrNswbz74GQBA&ved=0CBYQFjAA&usg=AFQjCNEth5YspFPWp6CInyAfknlEvVgIfA

私はちょうど取得する必要があります

http://it.wikipedia.org/wiki/Spider-Man_(film)

で試してみまし\?q=(.*)& たが、最後に発生したと見なされる&ため、取得します

http://it.wikipedia.org/wiki/Spider-Man_(film)&sa=U&ei=iavVUKuFGsrNswbz74GQBA&ved=0CBYQFjAA

http://rubular.com/r/yBiGIMQTUV

4

4 に答える 4

12

最初&. _ 貪欲なマッチング(つまり*の代わりに を使用) を使用すると*?、パターンは完全なパターンを満たすように、できるだけ長い文字列に一致します。

だからこれを使う: -

\?q=(.*?)&

&または、次を除くすべての文字に一致する否定された文字クラスを使用することもできます&

\?q=([^&]*)

(.*?)空の文字列と一致させたくない場合は、+量指定子を使用する必要があることに注意してください。発生に一致1 or moreします。

于 2012-12-22T13:45:35.423 に答える
2

演算子を遅延させる必要があるだけで、その後に*a を追加して実行します?。だからそうなるだろう.*?

遅延 (または非貪欲) は、最後の一致ではなく、その一致の最初の発生後に停止することを意味します。

于 2012-12-22T13:46:11.303 に答える
1

試す:

\?q=([^&]+)

最初のグループをキャプチャします。

于 2012-12-22T13:45:55.613 に答える
0

あなたのpythonsub(r'(\/url\?q\=)|[&][\S]*','',url)なら、あなたの仕事をするべきです

于 2012-12-22T13:53:08.390 に答える