П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 7: Регулярные выражения.
7.3 Образцы
7.3.6 Приоритет

Что произойдет, если объединить а | b*? Что будет отыскиваться — любое количество символов а или Ь или один символ а и любое количество b?

Групповые и фиксированные образцы, как и операции, имеют приоритет. Приоритет образцов (от высшего к низшему) приведен в таблице 7.2.

Таблица 7.2. Приоритет групповых регулярных выражений**

Наименование Обозначение
Круглые скобки
Множители
Последовательность
и фиксация Дизъюнкция
( ) (?: ) ? + * {m,n} ?? +? *? {m,n}? abc ^$ \А \Z (?= ) (?! )

* Или прямо перед символом новой строки в конце строки.

** Некоторые из этих символов в нашей книге не описываются. См. книгу Programming Perl или man-страницу perlreii(l).

Согласно этой таблице, специальный символ * имеет более высокий приоритет, чем |. В силу этого /а |b*/ интерпретируется как один символ а или любое число символов b.

Что, если нам понадобится другое — например, "любое число символов а или b"? В этом случае нужно просто использовать пару круглых скобок. В нашем примере в скобки нужно заключить ту часть выражения, к которой должна относиться *, т.е. (а|b)*. Если вы хотите подчеркнуть, какое выражение вычисляется первым, можно дать избыточные круглые скобки:

а (b*).

Изменение приоритета с помощью круглых скобок одновременно активизирует режим запоминания для данного образца, как мы рассказывали выше. То есть эти круглые скобки учитываются, когда вы определяете, соответствует ли какой-то элемент \2, \3 и т.д. Если вы хотите использовать круглые скобки без включения режима запоминания, применяйте форму (?:...), а не (...). Она тоже позволяет указывать множители, но не изменяет значение счетчика подлежащих запоминанию лексем, используя, например, переменную $4 и т.п. Например,/(?: Fred |Wilma) Flintstone/ ничего не записывает в переменную $ 1; здесь просто предполагается группирование.

Вот еще несколько примеров регулярных выражений и действия круглых скобок:

abc*   # соответствует ab, abc, abcc, abccc, abcccc, и т.д. 

(abc)* # соответствует "", ab, abc, abcabc, abcabcabc, и т.д.

^х|у   # соответствует х в начале строки или у в любом месте

^x.^y) # соответствует х или у в начале строки

а|be|d # либо а, либо be, либо d 

(a|b)(с|d) # ас, ad, be или bd 

(song|blue)bird # songbird или bluebird

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



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru