GSUB 替换 3 个或更多重复字符

GSUB replace 3 or more repeating characters

ruby 中的 gsub 正则表达式将不胜感激。我需要用文本字符串中的 2 个正斜杠“//”替换 3 个或更多正斜杠“//////”。但是,应跳过单个正斜杠和双正斜杠并保持原样。

我的数据看起来像这样 jeep/grand cherokee////////hyundai/////harley davidson//bmw 应该转换为 jeep/grand cherokee//hyundai//harley davidson//bmw

我没有太多使用 gsub 正则表达式的经验,这是我尝试过的一些方法,但它们要么去掉所有正斜杠,要么添加太多。

  vehicles = vehicles.gsub(/[\/\1{3,}]/, "")

  vehicles = vehicles.gsub(/[\/+]/, "//")

  vehicles = vehicles.gsub(/[\/{3,}]/,"//")

当您将整个模式括在方括号中时,您使其匹配单个字符。

您的正则表达式表示:

  • [\/\1{3,}] - 单个字符,/\1{3,}
  • [\/+] - /\u0002 字符或 +
  • [\/{3,}] - /{3,}

你可以使用

s.gsub(/\/{3,}/, '//')

参见Ruby demo online