Итак, я продолжу экскурс по 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-файле. Использование регулярного выражения значительно все упростит: