正则表达式:匹配直到第一次出现

时间:2017-02-21 00:44:38

标签: javascript regex

我想要的是匹配,直到第一次出现&。现在它只匹配&的最后一次出现。

我的正则表达式是

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

我正试图与这段文字相匹配:

  

https://www.google.com/url?rct3Dj&sa3Dt&url3Dhttp://business.itbusinessnet.com/article/WorldStage-Supports-Massive-4K-Video-Mapping-at-Adobe-MAX-with -Christie-义和拳-4K-放映机--- 4820052&安培; ct3Dga&安培; cd3DCAEYACoTOTEwNTAyMzI0OTkyNzU0OTI0MjIaMTBmYTYxYzBmZDFlN2RlZjpjb206ZW46VVM&安培; usg3DAFQjCNE6oIhIxR6qRMBmLkHOJTKLvamLFg

我需要的是:

  

http://business.itbusinessnet.com/article/WorldStage-Supports-Massive-4K-Video-Mapping-at-Adobe-MAX-with-Christie-Boxer-4K-Projectors---4820052

Click for the codebase.

1 个答案:

答案 0 :(得分:8)

使用非贪婪模式,如下所示:

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

在非贪婪模式(或懒惰模式)下,匹配将尽可能短。

如果你想摆脱&,那么只需将它包装在一个先行组中,这样它就不会出现在这样的比赛中:

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

或者您可以优化正则表达式,如下面的评论中提到的@apsillers:

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

注意: &不是特殊字符,因此您无需逃避它,