The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Perl" / Оглавление документа

[1] [2] [3] [4] [5] [след]

Удобства Perl: приятные мелочи. Часть 2


Итак, я продолжу экскурс по Perl - мощнейшей среде программирования.
Как и обещал - обозреваю некоторые регулярные выражения.
Вообще, если писать о регулярных выражениях, то на это уйдет целая глава, так что, я напишу лишь о наиболее привлекательных выражениях.

1) Выделение ip-адреса.

Допустим, тебе нужно проверить, является ли строка IP-адресом. Это можно сделать, как простой проверкой:

if ($string=~/(.*)\.(.*)\.(.*)\.(.*)/) { }

где проверяется наличием 3-х точек (разделителей звеньев ip-адреса),
так и более полной проверкой:

if ($string=~/^[01]?\d\d|2[0-4]\d|25[0-5])\.[01]?\d\d|2[0-4]\d|25[0-5])\.[01]?\d\d|2[0-4]\d|25[0-5])\.[01]?\d\d|2[0-4]\d|25[0-5])$/) { }

где проверяется корректность адреса (на предмет чисел).

Тебе решать, что использовать :) Это зависит от проги, которую ты пишешь. Если ты пишешь продукт, для всеобщего обозрения :) то ты должен тщательно выполнять проверку входных данных (мало ли какие пользователи будут юзать).

2) Удаление комментариев C.

Бывает, что в скрипте идет обработка C кода. Для этого нужно использовать оператор замены, при помощи регулярных выражений. Смысл заключается в удалении символов комментариев /* и */ :

s{
/\*
.*?
\*/
} []gsx;

3) Обработка ini-файла.

Здесь ini подразумевается как любой конфиг-файл, типа "переменная=значение". Задача - выделить значение из файла. Выделим файловую переменную в $1, а ее значение в $2:

open(INI,"conf.ini");
while (INI) {
chomp;
~/(\w+)\s*=\s*(.*)\s*$/
}
close(INI);

Где \w - любое слово, \s - символ пробела. ".*" - любая последовательность символов (не обязательно что переменная и значение не отделяются пробелом от знака равенства).

4) Проверка операционной системы.

В перловой переменной $^O хранится полное название твоей операционки. Бывает, что в скрипте нужно узнать, с какой системой работает скрипт. Пользуяюсь переменной, проверяем:

die "This is windows\n" if $^O = ~/windows/i;

5) Поиск ссылок в HTML-документах

Актуальная проблема - найти все ссылки в каком либо html-файле. Использование регулярного выражения значительно все упростит:

@urls = ~/<a[^>]+?href\s*=\s*["']?([^'" >]+?)[ '"]?>/sgi;

Суть поиска заключается в выделении всех символов после href= и перед кавычкой или апострофом. Все ссылки после поиска будут в массиве @urls :)

Вот пожалуй наиболее интересные regexp`ы, про которые я хотел написать.

Удачи в кодинге

Copyright Forb (2002)


[1] [2] [3] [4] [5] [след]


Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру