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
).