使用CodeWars中的正则表达式的示例。它应该找到单词并用俚语代替它们。
def gym_slang(phrase)
phrase.gsub(/([pP])robably/, "\\1rolly")
.gsub(/([iI])\sam/, "\\1'm")
.gsub(/([Ii])nstagram/, "\\1nsta")
.gsub(/([Dd])o\snot/, "\\1on't")
.gsub(/([gG])oing to/, "\\1onna")
.gsub(/([Cc])ombination/, "\\1ombo")
end
$1
工作?我认为$1
和\1
之间的差异是全局可用的第一个,而第二个仅在匹配和分组发生的方法中可用。 \1
工作?gsub
分开时,为什么该方法停止工作?它仅在我链接gsub
方法时才有效。答案 0 :(得分:2)
为什么在这个例子中没有工作1美元(我试过)?
因为您使用gsub
而没有阻止。参数在方法调用之前进行求值,因此如果将替换字符串作为参数给出,则无法在替换字符串中反映出正则表达式匹配。
为什么我们需要逃避两次?为什么只是\ 1不起作用?
因为"\1"
评估为"\u0001"
,这是一个不同的角色。
为什么当我分开gsubs时方法停止工作?
因为如果你只是进行非破坏性的方法调用,gsub
创建的字符串就会被抛弃。