为了账号安全,请及时绑定邮箱和手机立即绑定

不用否定重写正则表达式

不用否定重写正则表达式

Go
狐的传说 2021-10-25 20:24:13
我写了这个正则表达式来帮助我从一些文本文件中提取一些链接:https?:\/\/(?:.(?!https?:\/\/))+$因为我使用的是 golang/regexp lib,由于我的否定,我无法使用它 (?!..我想用它做的是选择从最后一次出现 http/https 到最后的所有文本。sometextsometexhttp://websites.com/path/subpath/#query1sometexthttp://websites.com/path/subpath/#query2=> 输出:http : //websites.com/path/subpath/#query2任何人都可以帮助我解决方案,我花了几个小时尝试不同的方法来重现相同的结果,但没有成功。
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

试试这个正则表达式:

https?:[^:]*$


查看完整回答
反对 回复 2021-10-25
?
不负相思意

TA贡献1777条经验 获得超10个赞

前瞻的存在是有原因的。

但是,如果您坚持使用所谓的等效替代方案,则可以使用的一般策略是:

(?!xyz)

有点等价于:

$|[^x]|x(?:[^y]|$)|xy(?:[^z]|$)

话虽如此,希望我没有犯任何错误:

https?:\/\/(?:$|(?:[^h]|$)|(?:h(?:[^t]|$))|(?:ht(?:[^t]|$))|(?:htt(?:[^p]|$))|(?:http(?:[^s:]|$))|(?:https?(?:[^:]|$))|(?:https?:(?:[^\/]|$))|(?:https?:\/(?:[^\/]|$)))*$



查看完整回答
反对 回复 2021-10-25
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信