这是“这个包含数学符号的正则表达式有什么问题?(Ruby/Rails) ”的变体。
我不明白为什么scan
后面的 a对加号 ( )gsub
不起作用。当模式包含其他正则表达式特殊字符(如星号 ( ) 和插入符号 ( )+
时,它也会失败。*
^
~ > irb
>> text = %(test √x+1 √x-1 √x×1 √/1)
=> "test √x+1 √x-1 √x×1 √/1"
>> radicals = text.scan(/√[^\s]*/)
=> ["√x+1", "√x-1", "√x×1", "√/1"]
>> radicals.each do |radical|
?> text = text.gsub(/#{radical}/, 'hello')
>> end
=> ["√x+1", "√x-1", "√x×1", "√/1"]
>> text
=> "test √x+1 hello hello hello"
正如您在第五行中看到的那样,它scan
找到了带有加号 ( +
) 的匹配模式,但是当我尝试gsub
对每个结果执行时,带有加号的模式被忽略了。关于这里发生了什么的任何想法?