为什么只要 GT 符号“>”是正则表达式中的第一个字符,gsub 就无法工作
Why is gsub not working whenever GT sign ">" is the first character in regex
在我处理的文本数据中,大于号总是被认为是最后一个字符。因此,我想替换所有不符合条件的事件:
some_variable.gsub!(/>([^\n])/, ">\n\1")
但是,我一直收到 *undefined 方法 gsub!' for nil:NilClass (NoMethodError)* error when calling this
gsub!` – 即使我用反斜杠转义了那个字符。
令我惊讶的是,更改它以使 GT 符号不是正则表达式中的第一个:
some_variable.gsub!(/(.)>([^\n])/,"\1\n\2")
让它发挥作用。但为什么? gsub
到 return 零这不是很奇怪吗?
gsub!
(破坏性)returns无when it doesnt modify anything
因此如果没有通配符该正则表达式不匹配,它的行为是预期的
这与gsub!
无关。错误消息说您尝试在 nil
上调用 gsub!
,即这意味着 some_variable
是 nil
,而您并不期望它是。 gsub!
的参数,甚至 gsub!
本身的调用,都是完全不相关的,你的问题是 some_variable
是 nil
,而你期望它是 String
.
在我处理的文本数据中,大于号总是被认为是最后一个字符。因此,我想替换所有不符合条件的事件:
some_variable.gsub!(/>([^\n])/, ">\n\1")
但是,我一直收到 *undefined 方法 gsub!' for nil:NilClass (NoMethodError)* error when calling this
gsub!` – 即使我用反斜杠转义了那个字符。
令我惊讶的是,更改它以使 GT 符号不是正则表达式中的第一个:
some_variable.gsub!(/(.)>([^\n])/,"\1\n\2")
让它发挥作用。但为什么? gsub
到 return 零这不是很奇怪吗?
gsub!
(破坏性)returns无when it doesnt modify anything
因此如果没有通配符该正则表达式不匹配,它的行为是预期的
这与gsub!
无关。错误消息说您尝试在 nil
上调用 gsub!
,即这意味着 some_variable
是 nil
,而您并不期望它是。 gsub!
的参数,甚至 gsub!
本身的调用,都是完全不相关的,你的问题是 some_variable
是 nil
,而你期望它是 String
.