Ruby只替换匹配字符串的一部分

时间:2016-12-20 14:43:53

标签: ruby-on-rails ruby

如何只替换Ruby代码中的部分字符串?

假设我有一个文本文件,其中包含多次出现的关键字“JVM_MEM_ARGS_64BIT”

JVM_MEM_ARGS_64BIT="-Xms512m -Xmx512m"

我只想替换第一次出现,我可以使用#sub而不是gsub

a.sub('JVM_MEM_ARGS_64BIT="-Xms512m -Xmx512m"', 'JVM_MEM_ARGS_64BIT="-Xms512m -Xmx1024m"')

但并非所有文件都包含

JVM_MEM_ARGS_64BIT="-Xms512m -Xmx512m"

有些可能是

JVM_MEM_ARGS_64BIT="-Xms256m -Xmx512m"

我不确定如何在ruby代码中执行此操作?我只能搜索关键字“JVM_MEM_ARGS_64BIT”,但如何删除现有的值赋值并将其替换为JVM_MEM_ARGS_64BIT =“ - Xms512m -Xmx1024m

新手Ruby开发人员。

1 个答案:

答案 0 :(得分:1)

String#sub接受正则表达式作为第一个参数:

replacement = 'JVM_MEM_ARGS_64BIT="-Xms512m -Xmx1024m"'
a.sub(/JVM_MEM_ARGS_64BIT="-Xms\d+m -Xmx\d+m"/, replacement)
相关问题