Ruby正则表达式 - 逃避所有

时间:2017-01-04 08:40:21

标签: ruby string

我有这个字符串:

string_to_replace = 'if [ "${USER_CONFIG}" != "" ] ; then'

我想得到:

'Sample Only!!!!!'

我在做:

string_to_replace.sub(/if [ "${USER_CONFIG}" != "" ] ; then/, 'Sample Only!!!!!')

但我没有得到理想的结果。

有没有办法在这个字符串中一次性转义所有正则表达式字符?

2 个答案:

答案 0 :(得分:2)

改变这个:

/if [ "${USER_CONFIG}" != "" ] ; then/

对此:

  1. 'if [ "${USER_CONFIG}" != "" ] ; then'

  2. string_to_replace

  3. /if \[ "\${USER_CONFIG}" != "" \] ; then/

  4. "if \[ \"\${USER_CONFIG}\" != \"\" \] ; then"

  5. sub()函数中。

答案 1 :(得分:0)

问题的真正答案是,是的,有。而这样做的方法是:

Regexp.new(Regexp.escape(string_to_replace))
#=> /if\ \[\ "\$\{USER_CONFIG\}"\ !=\ ""\ \]\ ;\ then/