Perché si verifica questo errore?Ruby Regexp Interpolazione/Classe caratteri/Clima di sintassi variabile globale?
Regexp.new("[#$]")
# => SyntaxError: (irb):1: syntax error, unexpected $undefined
# => Regexp.new("[#$]")
# ^
# (irb):1: unterminated string meets end of file
# from ~/.rvm/rubies/ruby-1.9.3-p194/bin/irb:1:in `<main>'
descrive l'sottoinsieme di stringhe costituito da un singolo $
o #
, letteralmente. E, AFAIU Ruby's Regexp engine, #
e $
don't need to be escaped all'interno di una classe di caratteri anche se in genere sono metacaratteri.
Indovino dal messaggio di errore che Ruby sta cercando di interpolare $
quando sta colpendo #
tra virgolette, ma ... perché? L'ordine è importante. I caratteri $
e #
hanno più comportamenti di sovraccarico, quindi non sono a conoscenza di cosa lo stia provocando.
PS, FYI:
/[#$]/
# => SyntaxError: (irb):1: syntax error, unexpected $undefined
/[$#]/
# => /[$#]/
Regexp.new '[$#]'
# => /[$#]/
Regexp.new '[#$]'
# => /[#$]/
Regexp.new "[#$]"
# => SyntaxError: (irb):1: syntax error, unexpected $undefined
possibile duplicato di [Perplesso da un semplice regex] (http://stackoverflow.com/questions/9493100/stumped-by-a-simple-regex) –
http://books.google.ca/books?id=jcUbTcr5XWwC&pg=PA48&lpg=PA48&dq=ruby+global+variable+interpolation&source=bl&ots=fIDnyi9zjG&sig=BqcdRjtCnj3pj-PCtcMYh7UHS18&hl=en&sa=X&ei=Ci29T8IJgZOJArLYzewN&ved=0CFoQ6AEwAw#v=onepage&q=ruby % 20 globale% 20 variabile% 20interpolazione & f = falso –
@muistooshort: sì, hai ragione: entrambe le domande avevano la stessa risposta. – pje