不用否定重写正则表达式

我写了这个正则表达式来帮助我从一些文本文件中提取一些链接:

https?:\/\/(?:.(?!https?:\/\/))+$

因为我使用的是 golang/regexp lib,由于我的否定,我无法使用它 (?!..

我想用它做的是选择从最后一次出现 http/https 到最后的所有文本。

sometextsometexhttp://websites.com/path/subpath/#query1sometexthttp://websites.com/path/subpath/#query2

=> 输出:http : //websites.com/path/subpath/#query2

任何人都可以帮助我解决方案,我花了几个小时尝试不同的方法来重现相同的结果,但没有成功。


狐的传说
浏览 143回答 2
2回答

浮云间

试试这个正则表达式:https?:[^:]*$

不负相思意

前瞻的存在是有原因的。但是,如果您坚持使用所谓的等效替代方案,则可以使用的一般策略是:(?!xyz)有点等价于:$|[^x]|x(?:[^y]|$)|xy(?:[^z]|$)话虽如此,希望我没有犯任何错误:https?:\/\/(?:$|(?:[^h]|$)|(?:h(?:[^t]|$))|(?:ht(?:[^t]|$))|(?:htt(?:[^p]|$))|(?:http(?:[^s:]|$))|(?:https?(?:[^:]|$))|(?:https?:(?:[^\/]|$))|(?:https?:\/(?:[^\/]|$)))*$
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go