2014-11-03 4 views
0

Я следующий учебник по регулярным выражениям в рубин, а метод называется регулярное выражение, которое, кажется, не работаетметод match1.regex, похоже, не работает в рубин

Tutorial 

re = /(\w*)\s(\w*),\s?([\w\s]*)/ 
match1 = str1.match re 
match2 = str2.match re 
match1.regex # => wsw,s[ws]  (this is IRB's unique way of showing regular expressions; it will still work normally) 

My console 

The regex method the method throws an error 

1.9.3-p547 :033 > re = /(\w*)\s(\w*),\s?([\w\s]*)/ 
=> /(\w*)\s(\w*),\s?([\w\s]*)/ 
1.9.3-p547 :034 >  match1 = str1.match re 
=> #<MatchData "Joe Schmo, Plumber" 1:"Joe" 2:"Schmo" 3:"Plumber"> 
1.9.3-p547 :035 >  match2 = str2.match re 
=> #<MatchData "Stephen Harper, Prime Minister" 1:"Stephen" 2:"Harper" 3:"Prime Minister"> 
1.9.3-p547 :036 > match1.regex 
NoMethodError: undefined method `regex' for #<MatchData "Joe Schmo, Plumber" 1:"Joe" 2:"Schmo" 3:"Plumber"> 
    from (irb):36 
    from /home/fernando/.rvm/rubies/ruby-1.9.3-p547/bin/irb:12:in `<main>' 
1.9.3-p547 :037 > 
+0

Перейдите по шагам, чтобы решить вашу проблему. В сообщении об ошибке говорится, что класс 'match1.class => MatchData' не имеет метода экземпляра' regex'. * [Docs] (http://www.ruby-doc.org/core-2.1.3/MatchData.html) * для этих методов экземпляра класса ('# ==', '# []', ' # begin', '# capture' и т. д.). Нет метода 'regex', но существует метод' regexp', поэтому, похоже, вы ошибочно написали имя метода. Кроме того: было бы полезно включить в ваш ответ 'str1' и' str2', чтобы читатели могли воспроизвести ваши результаты. –

ответ

0

Я думаю, что это должно быть

match1.regexp 

с окончательным номером 'p'

+0

match1.regexp =>/(\ w *) \ s (\ w *), \ s? ([\ W \ s] *)/ – user3678471

+0

Ответ аналогичен – user3678471

+0

Это ссылка http: // code. tutsplus.com/tutorials/ruby-for-newbies-regular-expressions--net-19812 – user3678471