使用Ruby';s gsub,字符串包含\0“;
我无法正确使用gsub: 鉴于此代码:使用Ruby';s gsub,字符串包含\0“;,ruby,gsub,Ruby,Gsub,我无法正确使用gsub: 鉴于此代码: "replace me".gsub(/replace me/, "this \\0 is a test") 结果是: "this replace me is a test" 但我期待的是: "this \0 is a test" 如何使用gsub获得我想要的结果 用另一个反斜杠将其转义,以便gsub知道您想要“\\0” (编辑)如果您所说的“\0”是指字节0x00,请执行以下操作: "replace me".gsub(/replace me/,
"replace me".gsub(/replace me/, "this \\0 is a test")
结果是:
"this replace me is a test"
但我期待的是:
"this \0 is a test"
如何使用gsub获得我想要的结果 用另一个反斜杠将其转义,以便
gsub
知道您想要“\\0”
(编辑)如果您所说的“\0”
是指字节0x00
,请执行以下操作:
"replace me".gsub(/replace me/, "this \0 is a test")
用另一个反斜杠将其转义,以便
gsub
知道您想要“\\0”
(编辑)如果您所说的“\0”
是指字节0x00
,请执行以下操作:
"replace me".gsub(/replace me/, "this \0 is a test")
\0是一个被整个匹配项替换的反向引用,它不是Ruby独有的。(您通常将其视为\1、\2等。\0更为罕见)当在单引号中找到
'\0'
时(通常是gsub
的最后一个参数),它相当于“\\0”
在双引号中,因为除了单引号中的'\\'
或'\''\'
之外,不能有任何转义序列。0是一个反向引用,被整个匹配项替换,并且它不是Ruby独有的。(您通常将它们视为\1、\2等。\0更为罕见)当在单引号中找到'\0'
时(正如gsub
的最后一个参数通常是一样),它相当于在双引号中找到'\\0'
,因为在单引号中除了'\\\'
或'\'\'
之外不能有任何转义序列。不,我不是指“\0”正如字节0x00所说,我有字符串string='这是一个测试'
,我想使用这个字符串作为gsub的第二个参数。string.gsub(/\\/,“\\\\\”)
?如何转义string
,以使\0
不被匹配项替换?如果替换文本不是编码时无法转义的字符串文字,则这将转义它们:string.gsub!(/(\\\d)/,“\\1”)
-替换字符串中有五个斜杠。每两个在实际字符串中变为一个,因此gsub
看到\\\1
表示一个反斜杠,后跟正则表达式\\\d
的第一个匹配项。这本身就是一个反斜杠后跟一个数字。因此,假设输入字符串包含\0
,它将被转换为\\0
或字面上的两个反斜杠,后跟一个数字零。不,我不是指“\0”,因为字节0x00表示我有字符串字符串='这\0是一个测试'
,我想使用这个字符串作为gsub的第二个参数。string.gsub(/\\/,“\\\\\”)
?如何转义string
,以使\0
不被匹配项替换?如果替换文本不是编码时无法转义的字符串文字,则这将转义它们:string.gsub!(/(\\\d)/,“\\1”)
-替换字符串中有五个斜杠。每两个在实际字符串中变为一个,因此gsub
看到\\\1
表示一个反斜杠,后跟正则表达式\\\d
的第一个匹配项。这本身就是一个反斜杠后跟一个数字。因此,假设输入字符串包含\0
,它将被转换为\\0
或两个反斜杠,后跟一个数字零。