gpt4 book ai didi

ruby-on-rails - ruby 正则表达式 : why does this code not replace what is found but simply insert

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:52 26 4
gpt4 key购买 nike

我有一个搜索 url 的 ruby​​ 正则表达式,我正在尝试用某种类型的 url 替换它们。

所以这个正则表达式检测任何 url 但排除我替换的类型。

但是,当我尝试这段代码时:

 s.sub(/(?!\S*\/el\/\d*)(?=(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<‌​>]+|(([^\s()<>]+|(([^\s()<>]+)))*))+(?:(([^\s()<>]+|(([^\s()<>]+)))*))))/, 'http://localhost:8080/el/133710')

如果 s 是 s = "blablabla www.google.com bla http://localhost blabla"

它应该将 www.google.com 替换为我的字符串 http://localhost:8080/el/133710

但我得到的是这个:

 "blablabla http://localhost:8080/el/133710www.google.com bla http://localhost blabla"

最佳答案

那是因为您预期的捕获 www.google.com 与前瞻性 (?=) 匹配,因此它实际上并未被捕获。 www.google.com 仅用作前瞻上下文。捕获的只是匹配位置的一个空字符串。 sub 将捕获的字符串(空字符串)替换为 http://localhost:8080/el/133710

关于ruby-on-rails - ruby 正则表达式 : why does this code not replace what is found but simply insert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com