Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 09:54 04.07.25 
Клубове/ Компютри и Интернет / Ruby Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Регулярни изрази. [re: Учeщ]
Автор УчeщМодератор (скромен тип)
Публикувано09.12.06 15:26  



Нека направим заедно една много интересна програма. Този път ще проверяваме
дали стринга отговаря на условие, описано в шаблон.
Съществуват символи и комбинации от символи в тези шаблони, които имат
специално значение:



[] - определя обхват. Например [a-z] означава буква във обхвата от
a до z.
\w - буква или цифра. Същото като [0-9A-Za-z].
\W - нито буква нито цифра.
\s - whitespace (за празно поле) символ. Същото като [ \t\n\r\f].
\S - символ, който не е whitespace.
\d - цифров символ. Същото като [0-9].
\D - Не цифров символ.
\b - backspace (0x08). Единствено ако е в range specification (спецификация на обхват).
\b - граница на дума. Ако не е в range specification (спецификация на обхват).
\B - символ, който не е граница на дума.
* - Нула или повече повторения на предишното.
+ - Едно или повече повторения на предишното.
{m,n} - Най-малко m и най-много n повторения на предишното.
? - Най-малко 0 и най-много един път повторения на предишното. Същото като
{0,1}.
| - Отговаря на предишният или следващият израз. (alternation)
() - групиране.


Общото название на шаблоните, които използват тази странна азбука
е регулярни изрази (regular expressions). В Руби, както и в Perl и
JavaScript те са в повечето случаи се обграждат със наклонени черти
(forward slashes) внести двоини кавички. Ако никога не си работил
със регулярни изрази те изглеждат всичко друго но не и "регулярни"
(правилни). Ще бъде умно, обаче да загубиш време и да се запознаем с тях.
Те са изключително мощни и ще ти спестят главоболия (и много редове код),
когато е необходимо да сравняваш низове, да търсиш в тях или да
извършваш други операзии със стрингове.
Например нека предположим че искаме да проверим дали стринга
отговаря на това условие: "Започва с малка буква f, която веднага
е следвана от точно една главна буква. След това не е задължително
но може да има разни символи, които не са малки букви тези символи
се повтарят докато не се среще малка буква. За да направим това в
Руби единственото, което трябва да направим е да сравним стринга
с регулярният израз /^f[A-Z][^a-z]*$/.
Как да проверим за "шеснаисетично число затворено в ъглови скоби"?
Няма проблеми.


C:\ruby\samples\RubySrc-1.8.5\sample>ruby eval.rb
ruby> def chab(s) # "sudurja hex v schupeni skobi"
ruby| (s =~ /<0(x|X)(\d|[a-f]|[A-F])+>/) != nil
ruby| end
nil
ruby> chab "OK, tova: <0xfc0004>."
true
ruby> chab "Ne tova."
false
ruby> chab "Ili tova? <0x38z7e>"
false
ruby> chab "Moje bi tova? {0x35}" # greshen tip skobi
false
ruby> exit


"=~" е оператор за сравнение, който се отнася за регулярните изрази.
Тои връща позицията в стринга където е било открито съвпадение или
nil ако не е било открито. Бележка за хората, който са по advanced
с регулярните изрази - Ruby не поддържа lookbehind.



Цялата тема
ТемаАвторПубликувано
* Синтаксис на Руби. УчeщМодератор   12.10.06 21:11
. * Изпълнение на входен код. Учeщ   16.10.06 22:12
. * Низове Учeщ   25.10.06 22:23
. * Низове supremacy   27.10.06 02:52
. * Регулярни изрази. Учeщ   09.12.06 15:26
. * Re: Изпълнение на входен код. supremacy   27.10.06 02:47
. * Re: Изпълнение на входен код. borko-b   25.02.07 13:57
. * Re: Синтаксис на Руби. supremacy   27.10.06 02:41
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.