ruby - 删除空格和等号之间的任何内容

标签 ruby regex

我有这个字符串:

2014-01-09T06:16:53.748849+00:00 heroku[路由器]: at=info method=POST fwd="94.66.255.106"dyno=web.12 connect=12ms service=21ms status= 200 字节=78

我希望它是:

2014-01-09T06:16:53.748849+00:00 heroku[router]: info POST "94.66.255.106"web.12 12ms 21ms 200 78

我试过这样的:

/.*=/

但它匹配第一个和最后一个等号之间的任何内容。

我确信替换第一个是可以的,然后使用类似 gsub 的东西来替换它们。

最佳答案

您的模式 /.*=/ 匹配除换行符之外的任何字符,直到一行中遇到的最后一个 =。发生这种情况是因为 * 是一个贪婪的量词,并且匹配尽可能多的字符。

您似乎需要匹配 = 之前没有空格的子字符串。你可以使用

s.gsub(/[^\s=]+=/, '')

参见 IDEONEregex demo

s = '2014-01-09T06:16:53.748849+00:00 heroku[router]: at=info method=POST fwd="94.66.255.106" dyno=web.12 connect=12ms service=21ms status=200 bytes=78'
puts s.gsub(/[^\s=]+=/, '')
# => 2014-01-09T06:16:53.748849+00:00 heroku[router]: info POST "94.66.255.106" web.12 12ms 21ms 200 78

模式匹配:

  • [^\s=]+ - 1 个或多个(由于 + 量词)空格和 =([^...]是否定字符类,匹配所有不在其中的字符)
  • = - 等号

关于ruby - 删除空格和等号之间的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919790/

相关文章:

regex - 正则表达式 - 连续 4 位数字,但不能全为零

java - 正则表达式删除 2 个字符串之间的所有内容

.net - 使用 Regex.Replace 时如何处理多个匹配项

ruby-on-rails - Mina 部署找不到包

mysql - 在 rails 4 中包含、加入和选择

ruby - 如何包含名称存储在变量中的模块?

javascript - 使用正则表达式从 URL 检测器中排除 mySite

javascript - 如何为我的正则表达式指定非捕获组以允许带有破折号的标签

ruby - 页面对象模型 : why not include assertions in page methods?

ruby - 如何使用 sinatra streaming api 关闭 redis 连接?