求可提取连续URL且保留跳转类完整URL的正则表达式
解决方案
可以使用以下正则表达式来满足需求:
~https?://.*?(?=(?<!=)https?://|$)~
正则解析
https?://:匹配URL的协议前缀(http://或https://).*?:非贪婪模式匹配任意字符,避免过度截断内容(?=(?<!=)https?://|$):正向预查断言,控制匹配终止的边界:(?<!=)https?://:确保即将出现的http:///https://前面没有等号=,以此区分参数中包含的跳转URL(如?url=http://xxx里的http://)和独立的新URL开头|$:匹配到字符串结尾时终止匹配
测试验证
针对输入字符串:http://foo.barhttps://foo.bazhttp://foo.bar?url=http://foo.baz
使用该正则提取后,将得到期望的数组:
['http://foo.bar', 'https://foo.baz', 'http://foo.bar?url=http://foo.baz']
内容的提问来源于stack exchange,提问作者Guillaume Cisco
相关产品推荐
相关产品推荐

