Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Syn (Lister plugin) 
Author Message
Борис



PostPosted: Fri Jul 21, 2006 12:20    Post subject: Reply with quote

2Митяй
Далее цитата:
Структура регулярных выражений POSIX чем-то напоминает структуру типичных математических выражений - различные элементы(операторы) объединяются друг с другом и образуют более сложные выражения. Однако именно смысл объединения элементов делает регулярные выражения таким мощным и выразительным средством. Возможности не ограничиваются поиском литерального текста (например, конкретного слова или числа); вы можете провести поиск строк с разной сематикой, но похожим синтаксисом - например, всех тегов HTML в файле.

Простейшее регулярное выражение совпадает с одним литеральным словом - например, выражение g совпадает в таких строках, как g, haggle, bag. Выражение, полученное при объединении нескольких литеральных символов, совпадает по тем же правилам - например, последовательность gan совпадает в люьой строке, содержащей эти символы (например gan, organize).

Оператор | (вертикальная черта) проверяет совпадение одной из нескольких альтернатив. Например, регулярное выражение php|zend проверяет строку на наличие php или zend.

Квадратные скобки

Квадратные скобки ( [ ] ) имеют особый смысл в контроле регулярных выражений - они означают "любой символ из перечисленных в скобках". В отличие от регулярного выражения word, которое совпадает во всех строках содержащей литеральный текст word, выражение [word] совпадает в любой строке, содержащей символ w, o, r или d. Квадратные скобки играют важную роль при работе с регулярными выражениями, поскольку в процессе поиска часто возникает задача поиска символов из заданного интервала. Ниже перечислены некоторые часто используемые интервалы:
[0-9] - совпадает с любой десятичной цифрой от 0 до 9;
[a-z] - совпадает с любым символом нижнего регистра от a до z;
[A-Z] - совпадает с любым символом верхнего регистра от A до Z;
[a-Z] - совпадает с любым символом нижнего или верхнего регистра от a до Z;

Перечисленные интервалы всего демонстрируют общий принцип. Например, вы можете воспользоваться интервалом [0-3] для обозначения любого символа от 0 до 3 или интервалом [a-d] для обозначения любого символя нижнего регистра от a до d.

Интервалы определяются произвольно.

Квантификаторы

Существует особый класс служебных символов, обозначающих количество повторений отдельного символа или конструкции, заключенной в квадратные скобки. эти служебные символы (+, * и {...} называются квантификаторами. Принцип их действия проще всего объяснить на примерах.
S+ означает один или несколько символов S, стоящих подряд;
S* означает ноль и более символов S, стоящих подряд;
S? означает ноль или один символ S;
S{2} означает два символа S, стоящих подряд;
S{2,3} означает от двух до трёх символов S, стоящих подряд;
S{2,} означает два и более символов S, стоящих подряд;

Прочие служебные символы

Служебные символы $ и ^ совпадают не с символами, а с определённой позиции в строке. Например, выражение S$ означает строку, которая завершается символом S, а выражение ^S - строку, начинающуюся с символа S.
Конструкция [^a-zA-Z] совпадает с любым символом, не входящим в указанные интервалы (a-z и A-Z).
Служебный символ . (точка) означает любой символ. Например, выражение S.S совпадает с символом S, за которым следует произвольный символ, после чего опять следует S.
Объединение служебных символов приводит к появлению более сложных выражений. Рассмотрим несколько примеров:
^.{2}$ - любая строка, содержащая два символа.
<b>(.*)</b> - произвольная последовательность символов, заключённых между lt;b> и lt;/b>.
p(hp*) - символ p, за которым следует ноль и более экземпляров последовательности hp (например, php).

Иногда требуется найти служебные символы в строках вместо того, чтобы использовать их в описанном специальном контексте. Для этого служебные символя экранируются обратной чертой (\). Например. Например, для поиска символя $ надо использовать выражение \$.

Стандартные интервальные выражения (символьные классы)
Для удобства программирования в стиле POSIX были определены некоторые стандартные интервальные выражения, также называемыми символьными классами(character classes). Символьный класс определяет один символ из заданного интервала - например, букву алфавита или цифру.
[[:alpha:]] - алфавитный символ (aA-zZ);
[[:digit:]] - цифра (0-9);
[[:alnum:]] - алфавитный символ (aA-zZ) или цифра (0-9).
[[:space:]] - пропуски (символы новой строки, табуляции и т.д.)
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group