例如,
(/=[^>]/, '═')
我想保持这个匹配,但只用双水平线替换等号。实际上,它匹配任何'=',后跟任何不是'>'的东西。但随后用替换字符替换'='和后续字符,我想保留以下字符,但只替换'='。如果它产生任何语法差异,那就是红宝石。
示例输入:
= render :partial => 'file'
第一个=应该转换,第二个应该保存
答案 0 :(得分:12)
根据您的正则表达式库(我不知道Ruby),您可以使用零宽度断言:
/=(?!>)/
请注意,此正则表达式与正则表达式略有不同,但它更符合您在标题中提供的说明。它将匹配=
之后未跟随的任何>
。这包括在文本末尾匹配=
,您的版本将不匹配。
答案 1 :(得分:1)
喜欢这个? (我使用的是-
而不是你所拥有的特殊字符):
irb内部:
ruby-1.9.2-p0 > "=x".gsub(/=([^>])/, '-\1')
=> "-x"
ruby-1.9.2-p0 > "=>".gsub(/=([^>])/, '-\1')
=> "=>"