带函数的Ruby eval字符串

带函数的Ruby eval字符串,ruby,escaping,double-quotes,Ruby,Escaping,Double Quotes,我正在尝试评估表达式: eval "\"1 pages\".gsub(/\D/,'')" 它总是检索“1页”,而我只需要字符串“1” 为什么eval忽略gsub?由于处于插值字符串中,因此需要转义反斜杠: eval "\"1 pages\".gsub(/\\D/, '')" 或者不要使用双引号,因为不需要插值: eval '"1 pages".gsub(/\D/, "")' 为什么eval忽略gsub 事实并非如此。在您看来,这可能是因为双引号中的\D没有特殊含义,因此它被解释为普通的“D

我正在尝试评估表达式:

eval "\"1 pages\".gsub(/\D/,'')"
它总是检索
“1页”
,而我只需要字符串
“1”


为什么
eval
忽略
gsub

由于处于插值字符串中,因此需要转义反斜杠:

eval "\"1 pages\".gsub(/\\D/, '')"
或者不要使用双引号,因为不需要插值:

eval '"1 pages".gsub(/\D/, "")'
为什么
eval
忽略
gsub


事实并非如此。在您看来,这可能是因为双引号中的
\D
没有特殊含义,因此它被解释为普通的
“D”
。在
“1页”中没有
“D”

您也希望转义
D
,因为这是正则表达式的一部分,而不仅仅是字符“D”:

eval“\”1页\“。gsub(/\\D/,''”)