你不需要逃避任何字符在字符類:
special = "[;\`'<>-]"
regex = /#{special}/
p regex
#pi = ARGV[0] #takes in console argument to test
pi = 'hello;world'
if pi == '3.1415926535897932385'
puts "got it"
end
if pi =~ regex
puts "stop word"
else
puts "incorrect"
end
--output:--
/[;`'<>-]/
stop word
而且ARGV[0]
是一個字符串了。但是,一個shell /控制檯,當你在命令行中輸入他們也承認特殊字符:
special = "[;\`'<>-]"
#regex = /[#{special.gsub(/./){|char| "\\#{char}"}}]/
regex = /#{special}/
p regex
pi = ARGV[0] #takes in console argument to test
if pi == '3.1415926535897932385'
puts "got it"
end
if pi =~ regex
puts "stop word"
else
puts "incorrect"
end
--output:--
~/ruby_programs$ ruby 1.rb ;
/[;`'<>-]/
incorrect
~/ruby_programs$ ruby 1.rb <
-bash: syntax error near unexpected token `newline'
如果你想外殼/控制檯來對待它能夠識別的特殊字符 - 爲文字,那麼你必須引用他們。有多種方法來quote things in a shell/console:
~/ruby_programs$ ruby 1.rb \;
/[;`'<>-]/
stop word
~/ruby_programs$ ruby 1.rb \<
/[;`'<>-]/
stop word
注意您可以使用String#[]太:
special = "[;\`'<>-]"
regex = /#{special}/
...
...
if pi[regex]
puts "stop word"
else
puts "incorrect"
end
當你自己輸入正則表達式中的特殊字符或者它是'gsub'的問題時它會失敗嗎? –
反斜槓是一個特殊字符,可能需要兩個:「\\」我不記得它是否是紅寶石,但我認爲如果字符串然後將被放入正則表達式或其他東西,perl需要四個 – DGM
沒有例子在你的問題如何失敗。請給我們提供一個簡單的輸入示例來說明問題,以及您希望代碼爲該輸入輸出的內容。 –