gpt4 book ai didi

ruby - 正则表达式 - 替换 URL/URI 中除外的单词

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:56 25 4
gpt4 key购买 nike

为 Web 应用程序编写全局化模块,我需要一个正则表达式来用另一个词(翻译)替换一个词的所有实例 - 除了 - 在 URL/URI 中找到的词。

编辑:我忘了说我正在使用 Ruby,所以我不能使用“Lookbehind”

最佳答案

  • 拆分 URI 正则表达式;在结果中包含 URI。
  • 对于每件作品:
    • 如果是 URI,不用管它
    • 否则,进行单词替换
  • 拼凑

代码:

# From RFC 3986 Appendix B, with these modifications:
# o Spaces disallowed
# o All groups non-matching, except for added outermost group
# o Not anchored
# o Scheme required
# o Authority required
URI_REGEX = %r"((?:(?:[^ :/?#]+):)(?://(?:[^ /?#]*))(?:[^ ?#]*)(?:\?(?:[^ #]*))?(?:#(?:[^ ]*))?)"

def replace_except_uris(text, old, new)
text.split(URI_REGEX).collect do |s|
if s =~ URI_REGEX
s
else
s.gsub(old, new)
end
end.join
end

text = <<END
stack http://www.stackoverflow.com stack
stack http://www.somewhere.come/stack?stack=stack#stack stack
END

puts replace_except_uris(text, /stack/, 'LINKED-LIST')

# => LINKED-LIST http://www.stackoverflow.com LINKED-LIST
# => LINKED-LIST http://www.somewhere.come/stack?stack=stack#stack LINKED-LIST

关于ruby - 正则表达式 - 替换 URL/URI 中除外的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2162860/

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