为什么gsub无论何时GT签名">"是正则表达式中的第一个字符

时间:2015-07-16 22:15:48

标签: ruby regex gsub

在我正在处理的文本数据中,伟大的符号总是应该是最终的角色。因此,我想要替换所有不符合要求的事件:

some_variable.gsub!(/>([^\n])/, ">\n\\1")

然而,我继续得到*未定义的方法gsub!' for nil:NilClass (NoMethodError)* error when calling this gsub!` - 即使我用反斜杠转义该字符。 令我惊讶的是,更改它以使GT标志不是正则表达式中的第一个:

some_variable.gsub!(/(.)>([^\n])/,"\\1\n\\2")

让它发挥作用。但为什么? gsub返回nil是不是很奇怪?

2 个答案:

答案 0 :(得分:4)

gsub!(破坏性)返回nil when it doesnt modify anything

因此,如果没有通配符

,正则表达式不匹配,则会出现其行为

答案 1 :(得分:2)

这与gsub!无关。错误消息表示您尝试在gsub!上致电nil,即当您不希望some_variable nilgsub!时。 gsub!的参数,甚至是对some_variable本身的调用都是完全无关紧要的,当您预期nil String A B C 1| Hi | Bill | 25 2| Do | You | 50 3| Like | Cheese | 75 4| Hi | Bill | 100 时,问题就是<p:selectOneButton value="#{selectOneView.productViewOption}" styleClass="product-view"> <f:selectItem itemLabel="" itemValue="Xbox One" /> <f:selectItem itemLabel="" itemValue="PS4" /> <f:selectItem itemLabel="" itemValue="Wii U" /> </p:selectOneButton> <script type="text/javascript"> $('.product-view div:nth-child(1) span').addClass('fa fa-list fa-2x'); $('.product-view div:nth-child(2) span').addClass('fa fa-star fa-2x'); $('.product-view div:nth-child(3) span').addClass('fa fa-th fa-2x'); </script> {{1}} }。