在gsub中的gsub中的双引号之间查找文本

时间:2019-02-22 19:52:24

标签: regex ruby gsub

我想通过gsub在ruby中找到文本文件中的文本,并像这样更改它:

我在主文件中的文字:

set description "alas-cd002-ak"

我想将其更改为以下内容:

<desc>alas-cd002-ak</desc>

所以我用了下面的命令,但是没有用:

text.gsub!(/\sset\sdescription\s"(?<name>^[a-zA-Z0-9_.-]*$)"/,'<desc>\k<name></desc>')

请帮助我修复我的gsub代码。我也是Ruby的新手。

1 个答案:

答案 0 :(得分:2)

最好的方法是使用正则表达式,就像@Wiktor在注释中所做的那样。这只是演示将正则表达式与枚举器一起使用的方法。

str = "set description \"alas-cd002-ak\""

enum = ['<desc>', '</desc>'].cycle
  #=> #<Enumerator: ["<desc>", "</desc>"]:cycle> 
str.gsub('"') { enum.next }
  #=> "set description <desc>alas-cd002-ak</desc>" 

注意:显示puts str

set description "alas-cd002-ak"