Warum tritt dieser Fehler auf?Ruby Regexp Interpolation/Zeichenklasse/Syntax der globalen Variablen Clash?
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>'
Dies sollte die Teilmenge von Strings beschreiben entweder aus einer einzelnen $
oder #
bestehend, buchstäblich. Und, AFAIU Ruby's Regexp engine, #
und $
don't need to be escaped innerhalb einer Zeichenklasse, obwohl sie in der Regel Metazeichen sind.
Ich würde von der Fehlermeldung vermuten, dass Ruby versucht, $
zu interpolieren, wenn es #
in doppelten Anführungszeichen trifft, aber ... warum? Bestellung ist wichtig. Die $
und #
Zeichen haben mehrere überladene Verhaltensweisen, so bin ich ratlos über das, was dies auslöst.
PS, FYI:
/[#$]/
# => SyntaxError: (irb):1: syntax error, unexpected $undefined
/[$#]/
# => /[$#]/
Regexp.new '[$#]'
# => /[$#]/
Regexp.new '[#$]'
# => /[#$]/
Regexp.new "[#$]"
# => SyntaxError: (irb):1: syntax error, unexpected $undefined
möglich Duplikat [Stumped durch eine einfache 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 % 20global% 20variable% 20interpolation & f = false –
@muistooshort: ja, du hast Recht: Beide Fragen hatten die gleiche Antwort. – pje