Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

if($string =~ /[^abcde]+/){

    print "In class";

}

В данном случае результат будет такой: In class

А если немного поменять $string:

$string = "abcde";

Тогда ничего не будет выведено, т.к. это и есть те символы, которых не должно быть...

А теперь давайте разберемся, что такое группа символов. С группами ассоциируются специальные переменные – $1, $2, $3, ... и т. д. (но до бесконечности, а не до девяти, как в JavaScript!). Разберем простой пример:

$string = "some_text 12345";

$string =~ /([a-z_]+)s+(d+)/g;

print "Text: $1 Numbers: $2";

Вот вывод программы:

Text: some_text

Numbers: 12345

Что-то заключенное в скобки – это группа, с которой ассоциируется специальная переменная вида $1 или ссылка на группу вида 1.

В первой группе диапазон строчных символов от a до z и символ подчеркивания (если вы хотите использовать дефис как символ в группе, а не как диапазон, то поставьте перед ним обратную косую черту). Со вложенными скобками также – на каждую открывающую скобку формируется специальная переменная (например, $1). Меняем местами слова при помощи оператора s/.../.../:

$string = "she loves me not";

# как видите, здесь четыре группы

$string =~ s/(w+)s+(w+)s+(w+)s+(w+)/$4 $3 $2 $1/g;

print $string;

Вот вывод нашей программы: not me loves she

Есть и такой вариант, без регулярных выражений:

$string = "she loves me not";

$string = join(" ",reverse split(" ",$string));

Результат такой же, как и в первый раз.

Также с помощью функции reverse можно проверить, является ли слово палиндромом:

$word = "reviver";

print $is_palindrome = ($word eq reverse($word));

Очень удобно работать с обработкой информации, например, от данных выхода какой-нибудь программы...

Рассмотрим более сложный пример:

# вот какие-нибудь входные данные

$string = "  x =  -15.32";

$string =~ ([a-z]+)s*=s*([+-]?d+.?d*)

/x;

В переменной $1 находится «x», а в переменной $2 – «-15.32». Теперь давайте разберемся, что к чему. В первой группе класс символов, т.е. диапазон символов от a до z строчных букв (начиная от одной буквы и более, т.к. используется квантификатор «+», квантификаторы действуют только на предыдущий символ, или класс символов). Далее, s* значит сколько угодно пробельных символов, или ни одного, затем символ «=», и опять же s*. После этого идет группа, в которой есть класс символов из «+» и «-», т.е. это значит, что символ «+» или «-» может присутствовать или не присутствовать (напомню: квантификатор «?» – ноль или одно совпадение).

Далее, d+ одно или сколько угодно чисел, затем точка или ее нет, а затем ноль или сколько угодно чисел.

А теперь чуть-чуть усложним нашу задачу, пусть данные будут такие (например, их вводил человек и допустил пару неточностей):

  x =  15.1  y = 3.  z =  +12.22


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2016 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100