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

Ama*_*day 5 javascript regex

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

我的正则表达是

(?!^)(http[^\\]+)\&
Run Code Online (Sandbox Code Playgroud)

我正试图匹配这个文本:

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-投影机--- 4820052 ct3Dga&cd3DCAEYACoTOTEwNTAyMzI0OTkyNzU0OTI0MjIaMTBmYTYxYzBmZDFlN2RlZjpjb206ZW46VVM&usg3DAFQjCNE6oIhIxR6qRMBmLkHOJTKLvamLFg&

我需要的是:

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

单击代码库.

ibr*_*rir 9

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

/(?!^)(http[^\\]+?)&/
//               ^
Run Code Online (Sandbox Code Playgroud)

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

如果你想摆脱&它然后只是将它包装在一个前瞻组中,所以它不会像这样匹配:

/(?!^)(http[^\\]+?)(?=&)/
//                 ^^  ^
Run Code Online (Sandbox Code Playgroud)

或者您可以优化正则表达式,因为@apsillers在评论中建议如下:

/(?!^)(http[^\\&]+)/
Run Code Online (Sandbox Code Playgroud)

注意: &不是特殊字符,所以你不需要逃避它,

  • @SamKirklandWA如果你不想匹配最后的`&`,你可以改为`/(?!^)(http [^ \\&] +)/`(即匹配所有不是反斜杠或&符号的东西) .)在这种情况下,贪婪/懒惰问题无关紧要,因为在最后一组之后没有任何内容. (2认同)