2017-02-21 121 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查看更新! –

相關問題