Что делает это регулярное выражение?match = /^plus_([0-9]+)$/.match(m.to_s) - PullRequest
0 голосов
/ 10 ноября 2010

Что делает это регулярное выражение RUBY:

match = /^plus_([0-9]+)$/.match(m.to_s)

Кажется, что оно совпадает с плюсом, а затем числом.

Но что делает .match(m.to_s) часть? он прикован к себе? Я не понимаю.

Извините, Рубин.

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

Вызов .match(s) для регулярного выражения запускает регулярное выражение против s и возвращает MatchData объект m.to_s просто означает «вызов метода to_s для m» (т.е. преобразование его в строку).

1 голос
/ 10 ноября 2010

Ха-ха, приятно редактировать! Сначала я подумал, что это Ruby - мой ответ до сих пор верен.

Вы правы относительно того, что соответствует регулярному выражению. Однако .match() - это метод, используемый для сопоставления регулярного выражения со строками. Он возвращает объект MatchData, который затем можно использовать для поиска информации о совпадении.

Таким образом, /^plus_([0-9]+)$/ создает объект регулярного выражения, .match(m.to_s) сопоставляет его с m в виде строки, и результирующие MatchData сохраняются в match.

См. Документация Regexp .

0 голосов
/ 10 ноября 2010

Я никогда не смотрел на ruby, но, исходя из того, что здесь говорили другие, похоже, что это вызов метода "match" для регулярного выражения, которое было только что определено, для строки "m".* Таким образом, само регулярное выражение становится «объектом», для которого вызывается метод «match», а аргумент является результатом (m.to_s), который является просто строкой.Результат метода «match ()» затем возвращается в переменную с именем «match».

Я думаю, что тот факт, что вызов метода совпадает с именем возвращаемой переменной, делает это странным.

Теперь это может быть на 100% неправильно, поскольку я НИКОГДА не смотрел на рубин, но, исходя из того, что говорили другие, это выглядит так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...