Ruby如何使用正则表达式替换字符串的一部分以及可选的附加部分

问题描述 投票:0回答:1

我正在解析日志文件中的字符串,格式通过以下方式之一:

[info] something written here

要么

[info] - something written here

在这两种情况下,我都需要返回:

something written here

-是我正在解析的日志的可选添加项。

我希望有两个正则表达式在两种情况下得到相同的结果

我试过了:

line = "[info] - something written here"

line.gsub('[info] ',"")

结果如何

- something written here

我怎样才能摆脱可选的-

ruby regex string
1个回答
1
投票
line1 = "[info] something written here"
line2 = "[info] - something else written here"

line1.gsub(/\[info\] (- )?/,"") #=> "something written here""
line2.gsub(/\[info\] (- )?/,"") #=> "something else written here"
  • 你需要用正则表达式执行gsub,而不是String
  • 反斜杠添加到\[\]以使用文字字符,而不是正则表达式字符集的括号。
  • ?使捕获组成为可选的。

您还可以考虑使模式更通用 - 例如说“任意数量的空格和连字符”:/\[info\][- ]*/

© www.soinside.com 2019 - 2024. All rights reserved.