Ruby Regex отличается от Rubular

Я пытаюсь сделать то же самое простое регулярное выражение на Rubular.com и моей виртуальной машине Linux с Ruby 1.9.2. Я не знаю, почему я получаю разные результаты: VM:

my_str = "Madam Anita"
puts my_str[/\w/]

это выводы: мадам

на Rubular выдает: MadamAnita Rubular: http://www.rubular.com/r/qyQipItdes

Я хотел бы помочь. Я застрял здесь. Я не смогу проверить мой код для hw1.

2 ответа

Решение

Нет, это не совсем так. Он соответствует всем персонажам "Мадам" и "Анита", но не пробел. Проблема в том, что my_str[/\w/] возвращает только одно совпадение для данного регулярного выражения, тогда как Rubular выделяет все возможные совпадения.

Если вам нужны все вхождения, вы можете сделать это:

1.9.3p194 :002 > "Madam Anita".scan(/\w+/)
 => ["Madam", "", "Anita", ""] 

На самом деле, \w соответствует одному символу. Результат в Rubular содержит пробелы между соседними символами, чтобы сказать вам это (хотя я хотел бы, чтобы они также сделали выделение более очевидным...). Сравните с результатами сопоставления \w+, которая соответствует двум строкам (Madam а также Anita).

Другие вопросы по тегам