2017-02-21 38 views
2

私が試しているのは、&が最初に出現するまでマッチすることです。現在、&の最後の出現と一致しています。正規表現:最初に出現するまで一致

私の正規表現は

(?!^)(http[^\\]+)\& 

であり、私はこのテキスト照合しようとしています:

https://www.google.com/url?rct3Dj & sa3Dt & url3Dhttp: //business.itbusinessnet.com/article/WorldStage-Supports-Massive-4K-Video-Mapping-at-Adobe-MAX-with-Christie-Boxer-4K-Projectors---4820052 & ct3Dga & cd3DCAEYACoTOTEwNTAyMzI0OTkyNzU0OTI0MjIaMTBmYTYxYzBmZDFlN2RlZjpjb206ZW46VVM & usg3DAFQjCNE6oIhIxR6qRMBmLkHOJTKLvamLFg

私は必要なもの:

http://business.itbusinessnet.com/article/WorldStage-Supports-Massive-4K-Video-Mapping-at-Adobe-MAX-with -Christie-ボクサー-4K-プロジェクター--- 4820052

Click for the codebase.

答えて

3

使用このような非貪欲モード:

/(?!^)(http[^\\]+?)&/ 
//    ^

貪欲でないモード(またはレイジーモード)では、可能な限り短いです。

あなたはOT取り除くしたい場合は、このような試合になりませんので、&は、ちょうど先読みグループでラップ:

/(?!^)(http[^\\]+?)(?=&)/ 
//     ^^^

それとも@apsillersとして正規表現を最適化することができ

/(?!^)(http[^\\&]+)/ 

注:あなたはそれをエスケープする必要はありませんので、&は特殊文字ではない、

怒鳴る、このようなコメントで示唆
+0

最後の '&'を取り除く方法はありますか? –

+2

@SamKirklandWA最後の '&'にマッチさせたくない場合は、代わりに '/(?!^)(http [^ \\&] +)/'を実行することができます(バックスラッシュやアンパサンド。)その場合、最後のグループの後には何もないので、貪欲/怠け者の問題は関係ありません。 – apsillers

+0

@SamKirklandWAアップデートをご覧ください! –

関連する問題