Regular Expression Basic.
Код:
print "help".sub(/p/, "lo")
Вывод:
hello
С помощью .sub мы "p" меняем на "lo".
Код:
print "I like Ruby".sub(/like/, "love")
Вывод:
I love Ruby
Просто с помощью .sub - substitution заменяется "like" на "love".
Код:
print "I like Ruby".sub(/I/, "You")
Вывод:
You like Ruby
Код:
print "Ruby".sub(/^/, "Hello ")
Вывод:
Hello Ruby
С помощью .sub и замены "^" в начало строки вклинивается слово "Hello ".
Код:
print "Ruby".sub(/$/, " rocks")
Вывод:
Ruby rocks
С помощью .sub и замены "$" в конец строки вклинивается слово "rocks".
Код:
print "I only have $5 in my wallet".sub(/\$\d/, "five dollars")
Вывод:
I only have five dollars in my wallet
С помощью .sub мы заменили $5 на "five dollars". Эту конструкцию - /\$\d/ - я поняла так:
надо заменить $ и d (digit) число "5".
Код:
print "I now have $50 in my wallet".sub(/\$\d+/, "fifty dollars")
Вывод:
I now have fifty dollars in my wallet
С помощью .sub мы меняем $50 на "fifty dollars"). Здесь то же самое, что в предыдущем посте, только в этой конструкции /\$\d+/ к d прибавляется + . Это показывает, что надо поменять не только d (digit), но и нули. Если один и больше нулей, надо писать плюсик. Вродь так. Только что протестила у себя на компе.
Код:
puts "String has vowels" if "I love Ruby".match(/[aeiou]/)
Вывод:
String has vowels
Мы кагбэ говорим интерпретатору: "Напиши строку "String has vowels", если в фразе "I love Ruby" совпадут буквы с [aeiou]. Даже если одна совпадет, интерпретатор выдаст нужную нам строку.
Код:
program_name = "interactive-2.1.1"
matches = program_name.match(/(.*)-(\d+)\.(\d+)\.(\d+)/)
name, major, minor, tiny = matches[1..-1]
print "Name: ", name, " Major: ", major, " Minor: ", minor, " Tiny: ", tiny
Вывод:
Name: interactive Major: 2 Minor: 1 Tiny: 1
1. Мы задаем переменную program_name = "interactive-2.1.1".
2. Задаем переменную matches = program_name.match(/(.*)-(\d+)\.(\d+)\.(\d+)/). Т.е. по сути, если program_name заменить на ее значение, то получится matches = program_name.match aka interactive-2.1.1.match. и дальше в скобочках идут параметры сравнения. Совпадают ли эти два значения. * - это слово "interactive". Одна звездочка, наверное, потому что не имеет значение количество букв, хз. Дальше идет тире, а потом числа. Т.е. тоже дан универсальный эквивалент - d+ - присутствует ли любое число. Таким образом схема получается следующая:
Создаем переменную matches(совпадения) = interactive-2.1.1и в скобках универсальные символы. Абстрактный * и d+, означающие любое слово и любые числа. Причем d даны сразу с плюсиком, шоб, если это не цифра, а число, тоже выдало результат.
Также смею предположить, что \. - это экранирование. Ну, шоб программа знала, что точку надо учитывать. Или хз. Шо-та я уже сомневаюсь)
3. name, major, minor, tiny = matches[1..-1]. Не знаю, шо це. Вроде похожи на переменные. Но типа они равны той переменной (matches) со значением [1..-1].
Что такое [1..-1] - хз. Но у меня есть предположение, что имеется в виду вся область совпадений. Т.е. с 1 по -1 пишется, чтобы включить ВСЕ элементы.
4. Выводится на экран строка "Name: " и переменная(?) name, которая у нас в данном случае равна слову "interactive". Далее выводится строка " Major: " и переменная(?) major, которая в данном случае равна 2, то же самое с minor и tiny.
Код:
phone_pattern = /^((\(\d{3}\) |\d{3}-)\d{3}-\d{4}|\d{3}\.\d{3}\.\d{4})$/
num = "(123) 234-2345"
if num =~ phone_pattern
print "pattern matched"
else
print "pattern not matched"
end
Вывод:
pattern matched
В общем, надо почитать, что за что отвечает в этих регулярках. Единственное, что понимаю, это то, что ^ - начало строки, $ - конец строки, а d - digit. Но там свой синтаксис, надо будет разобраться :)
Код:
print "help".sub(/p/, "lo")
Вывод:
hello
С помощью .sub мы "p" меняем на "lo".
Код:
print "I like Ruby".sub(/like/, "love")
Вывод:
I love Ruby
Просто с помощью .sub - substitution заменяется "like" на "love".
Код:
print "I like Ruby".sub(/I/, "You")
Вывод:
You like Ruby
С помощью .sub "I" заменяется на "You".
Код:
print "Ruby".sub(/^/, "Hello ")
Вывод:
Hello Ruby
С помощью .sub и замены "^" в начало строки вклинивается слово "Hello ".
Код:
print "Ruby".sub(/$/, " rocks")
Вывод:
Ruby rocks
С помощью .sub и замены "$" в конец строки вклинивается слово "rocks".
Код:
print "I only have $5 in my wallet".sub(/\$\d/, "five dollars")
Вывод:
I only have five dollars in my wallet
С помощью .sub мы заменили $5 на "five dollars". Эту конструкцию - /\$\d/ - я поняла так:
надо заменить $ и d (digit) число "5".
Код:
print "I now have $50 in my wallet".sub(/\$\d+/, "fifty dollars")
Вывод:
I now have fifty dollars in my wallet
С помощью .sub мы меняем $50 на "fifty dollars"). Здесь то же самое, что в предыдущем посте, только в этой конструкции /\$\d+/ к d прибавляется + . Это показывает, что надо поменять не только d (digit), но и нули. Если один и больше нулей, надо писать плюсик. Вродь так. Только что протестила у себя на компе.
Код:
puts "String has vowels" if "I love Ruby".match(/[aeiou]/)
Вывод:
String has vowels
Мы кагбэ говорим интерпретатору: "Напиши строку "String has vowels", если в фразе "I love Ruby" совпадут буквы с [aeiou]. Даже если одна совпадет, интерпретатор выдаст нужную нам строку.
Код:
program_name = "interactive-2.1.1"
matches = program_name.match(/(.*)-(\d+)\.(\d+)\.(\d+)/)
name, major, minor, tiny = matches[1..-1]
print "Name: ", name, " Major: ", major, " Minor: ", minor, " Tiny: ", tiny
Вывод:
Name: interactive Major: 2 Minor: 1 Tiny: 1
1. Мы задаем переменную program_name = "interactive-2.1.1".
2. Задаем переменную matches = program_name.match(/(.*)-(\d+)\.(\d+)\.(\d+)/). Т.е. по сути, если program_name заменить на ее значение, то получится matches = program_name.match aka interactive-2.1.1.match. и дальше в скобочках идут параметры сравнения. Совпадают ли эти два значения. * - это слово "interactive". Одна звездочка, наверное, потому что не имеет значение количество букв, хз. Дальше идет тире, а потом числа. Т.е. тоже дан универсальный эквивалент - d+ - присутствует ли любое число. Таким образом схема получается следующая:
Создаем переменную matches(совпадения) = interactive-2.1.1и в скобках универсальные символы. Абстрактный * и d+, означающие любое слово и любые числа. Причем d даны сразу с плюсиком, шоб, если это не цифра, а число, тоже выдало результат.
Также смею предположить, что \. - это экранирование. Ну, шоб программа знала, что точку надо учитывать. Или хз. Шо-та я уже сомневаюсь)
3. name, major, minor, tiny = matches[1..-1]. Не знаю, шо це. Вроде похожи на переменные. Но типа они равны той переменной (matches) со значением [1..-1].
Что такое [1..-1] - хз. Но у меня есть предположение, что имеется в виду вся область совпадений. Т.е. с 1 по -1 пишется, чтобы включить ВСЕ элементы.
4. Выводится на экран строка "Name: " и переменная(?) name, которая у нас в данном случае равна слову "interactive". Далее выводится строка " Major: " и переменная(?) major, которая в данном случае равна 2, то же самое с minor и tiny.
Код:
phone_pattern = /^((\(\d{3}\) |\d{3}-)\d{3}-\d{4}|\d{3}\.\d{3}\.\d{4})$/
num = "(123) 234-2345"
if num =~ phone_pattern
print "pattern matched"
else
print "pattern not matched"
end
Вывод:
pattern matched
Комментариев нет:
Отправить комментарий