П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое







Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 27569 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 9144 раз(а).

Учебник HTML.
Просмотров 15828 раз(а).

Руководство по PHP5.
Просмотров 7919 раз(а).

Хостинг через призму DNS.
Просмотров 11648 раз(а).

Подборка текстов стандартных документов.
Просмотров 12462 раз(а).

Учебник PHP - Самоучитель
Просмотров 8423 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 6215 раз(а).

Внешние атаки...
Просмотров 5383 раз(а).

Учебник PHP.
Просмотров 6749 раз(а).

SSI в примерах.
Просмотров 3914 раз(а).



 
 

Руководство пользователя для GNU Awk

4. Регулярные выражения

4.5 Зависимость от регистра при определении соответствия

Нормально регистр учитывается в регулярных выражениях при соответствии простых символов (т.е. не метасимволов) и внутри символьных множеств. Так, `w' в регулярном выражении соответствует только `w' нижнего регистра и не соответствует верхнерегистровому `W'.

Простейший путь для независимого от регистра соответствия есть использование символьного списка: `[Ww]'. Однако, это может оказаться громоздким, если это нужно часто; и это может затруднить прочтение регулярного выражения. Имеются две альтернативы для упрощения.

Один путь устроить нечувствительное к регистру соответствие в некоторой точке программы есть конвертирование данных к одному регистру с помощью встроенных функций tolower или toupper (их мы еще не рассматривали; см. раздел 12.3 [Встроенные функции для действий с цепочками], стр. 137). например, tolower($1) ~ /foo/ - ... "" переводит первое поле в нижний регистр перед проверкой соответствия с ним. Это работает в любой реализации awk, соответствующей POSIX.

Другой метод, специальный для gawk, состоит в установке переменной IGNORECASE на ненулевое значение (см. Главу 10 [Встроенные переменные], стр. 115). Когда IGNORECASE не равна нулю, все операции над regexp и цепочками игнорируют регистр. Изменяя динамически значение IGNORECASE, можно управлять чувствительностью к регистру во время исполнения программы. По умолчанию регистр учитывается, потому что IGNORECASE (подобно большинству переменных) инициализируется нулем.


x = "aB" if (x ~ /ab/) ... # этот тест не сработает

IGNORECASE = 1 if (x ~ /ab/) ... # теперь пройдет успешно

В общем случае нельзя использовать IGNORECASE, чтобы сделать некоторые правила чувствительными к регистру, а другие нечувствительными, потому что нет способа установить IGNORECASE только для образца конкретного правила. Чтобы сделать это, нужно использовать список символов или tolower. Но вы можете динамической установкой или сбросом переменной IGNORECASE включать и выключать чувствительность к регистру для всех правил вместе.

IGNORECASE может быть установлена из командной строки или правилом BEGIN (см. раздел 14.2 [Остальные аргументы командной строки ], стр. 165; также см. раздел 8.1.5.1 [Действия при запуске и очистке], стр. 100). Установка IGNORECASE из командной строки есть способ сделать программу чувствительной к регистру без редактирования ее.

До версии 3.0 gawk значение IGNORECASE влияло только на операции regexp. Оно не действовало на сравнение цепочек по `==', `!=', и т.д. Начиная с версии 3.0, как regexp операции, так и операции сравнения цепочек подчинены значениям IGNORECASE.

Начиная с версии gawk 3.0, эквивалентность символов верхнего и нижнего регистров относится к множеству символов ISO-8859-1 (ISO Latin-1). Это множество есть супермножество традиционных символов 128 ASCII, которое также содержит некоторое количество символов, используемых в европейских языках.

Значение IGNORECASE безразлично, если gawk действует в режиме эмуляции (см. раздел 14.1 [Параметры командной строки], стр. 161). Регистр всегда учитывается в режиме эмуляции.

Назад | Вперед
Содержание (общее) | Содержание раздела



 



Copyright © 2005-2007 Project.Net.Ru