Шаг 1: Добавьте это в закладки . Всякий раз, когда мне нужно посмотреть регулярные выражения, это моя первая остановка
Шаг 2: Давайте пройдемся по вашему коду
text.gsub(/\s/, "-")
Вы вызываете функцию gsub
и задаете ей 2 параметра.
Первый параметр - /\s/
, который является ruby для «создания нового регулярного выражения, содержащего \s
(// являются специальными« »для регулярных выражений).
Вторым параметром является строка "-"
.
Таким образом, все пробельные символы будут заменены дефисами. Пока все хорошо.
.gsub([^\W-], '').downcase
Затем вы снова вызываете gsub, передавая ему 2 параметра.
Первый параметр - [^\W-]
. Поскольку мы не заключили его в кавычки, ruby буквально попытается запустить этот код. []
создает массив, затем пытается вставить ^\W-
в массив, который не является допустимым кодом, поэтому он ломается.
Изменение его на /[^\W-]/
дает нам действительное регулярное выражение.
Глядя на регулярное выражение, []
говорит «соответствует любому персонажу в этой группе. Группа содержит \W
(что означает несловесный символ) и -
, поэтому регулярное выражение должно соответствовать любому несловесному символу или любому дефису.
Поскольку вторая вещь, которую вы передаете gsub - это пустая строка, она должна заменить все несловарные символы и дефисы на пустую строку (таким образом, удаляя их)
.downcase
Что просто преобразует строку в нижний регистр.
Надеюсь, это поможет :-)