我想要的是匹配,直到第一次出现&
。现在它只匹配&
的最后一次出现。
我的正则表达式是
(?!^)(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
答案 0 :(得分:8)
使用非贪婪模式,如下所示:
/(?!^)(http[^\\]+?)&/
// ^
在非贪婪模式(或懒惰模式)下,匹配将尽可能短。
如果你想摆脱&
,那么只需将它包装在一个先行组中,这样它就不会出现在这样的比赛中:
/(?!^)(http[^\\]+?)(?=&)/
// ^^ ^
或者您可以优化正则表达式,如下面的评论中提到的@apsillers:
/(?!^)(http[^\\&]+)/
注意: &
不是特殊字符,因此您无需逃避它,