Читать реферат по информатике, вычислительной технике, телекоммуникациям: "Регулярные выражения в perl" Страница 3
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя »
кодов с нуля до самого 255.
Ну а теперь, позвольте представить вам... Символ * превращает предыдущую часть шаблона в маленькое прожорливое существо - квантификатор. Этот самый квантификатор сожрет все символы (так как у нас перед этим было указание точка - любой символ) до самого конца строки. Бесплатный сыр только в мышеловке, но квантификатор этого не знает. Мы не зря поместили его в контейнер. После того, как обработка регулярного выражения будет завершена у нас будет контейнер, в котором сохранится все то, что сожрал квантификатор. Так как у нас всего два контейнера, то это контейнер будет у нас под номером два. В последствии мы так и скажем perl - а ну, отдай нам содержимое второго контейнера. Вот так то.
Итак, чего мы достигли? Мы будем искать нечто, состоящее из двух контейнеров, разделенных единичным пробельным символом. Правый контейнер у нас будет содержать всю ту часть строки, которая находится после единичного пробельного символа. После выполнения регулярного выражения мы сможем использовать содержимое правого (ну и левого то же) контейнера по своему усмотрению. Вот такой вывод на данный момент.
Пора приступать к содержимому левого контейнера. Напомню как он выглядит
[^\s]*
Квадратные скобки определяют класс символов. Что такое класс символов? Предположим, что искомое не может быть представлено последовательностью символов, то есть подстрокой. Иначе говоря, в примере с Пупкиным мы не можем явно указать
/Pupkin/
Не важно, по каким причинам. Может быть искомое очень длинное, а может быть искомое - произвольные варианты строк, состоящих из определенных символов. Так вот в таком случае мы определим класс символов. Например символы латинского алфавита определяются таким классом
[a-zA-Z]
Заметьте как удобно - мы не указываем все символы подряд. Мы просто определяем границы с помощью метасимвола - (это как бы даже и не совсем метасимвол, а только в данном случае). Вместо перечисления цифровых символов мы можем записать
[0-9]
Хотя для цифровых символов есть более эффективное решение - метасимвол \d. Итак, у нас в левой части определен класс символов. Но какой-то интересный класс получается - вроде привязанный к началу строки. Нет, метасимвол ^ внутри класса указывает на отрицание символов класса. Это значит, что на месте этой части шаблона должен находиться любой символ, не входящий в состав класса. То есть, для примера
[^0-9]
указывает, что здесь может быть любой нецифровой символ. Так и в нашем примере. Ну а с метасимволом \s вы уже знакомы. Учитывая отрицание получаем - любой непробельный символ. Учтите, что класс определяет только множество для соответствия или отрицания, но не множество для отбора. То есть, если у вас класс, то под шаблон попадет только один символ, удовлетворяющий условию. Для того, чтобы отобрать несколько символов нужно использовать квантификатор, что мы и делаем после описания класса символов. Теперь, что бы разобраться для отбора каких строк можно воспользоваться этим шаблоном давайте напишем пример.
#!C:/per/bin/perl -w
use strict;
reg("Vasya Pupkin");
reg(" Vasya Pupkin");
reg("Vasya\t\tpupkin");
sub reg{
print "\$1=$1\n\$2=$2\n\n" if $_[0] =~ /([^\s]*)\s(.*)/;
}
В результате получится
$1=Vasya
$2=Pupkin
$1=
$2=Vasya Pupkin
$1=Vasya
$2= pupkin
Теперь давайте разберемся почему и как. Первый
- 1
- 2
- 3
- 4
- 5
- . . .
- последняя »
Похожие работы
| Тема: Регулярные выражения в perl |
| Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
| Тема: Встроенные типы данных в С#. Массивы. Строки. Регулярные выражения |
| Предмет/Тип: Отсутствует (Практическое задание) |
| Тема: Регулярные планы застройки Калуги и уездных центров XVIII века |
| Предмет/Тип: Культурология (Контрольная работа) |
| Тема: Регулярные сигналы |
| Предмет/Тип: Информатика, ВТ, телекоммуникации (Практическое задание) |
| Тема: Тромбоцитарная активность у студентов, проходящих регулярные тренировки по снарядной гимнастике |
| Предмет/Тип: Медицина, физкультура, здравоохранение (Реферат) |
Интересная статья: Быстрое написание курсовой работы

(Назад)
(Cкачать работу)