Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Регулярные выражения. Подшаблоны

Читайте также:
  1. Виды административно-правовых форм государственного управления в административном праве классифицируются по содержанию и способу выражения.
  2. Вопрос №95 Правовой нигилизм. понятие, источники, формы выражения.
  3. Выражения.
  4. Дисперсные системы. Истинные растворы. Концентрация растворов и способы ее выражения.
  5. Найдите в тексте однородные члены с обобщающими словами, установите способ их морфологического выражения.
  6. Найдите в тексте однородные члены с обобщающими словами, установите способ их морфологического выражения.
  7. Найдите в тексте однородные члены с обобщающими словами, установите способ их морфологического выражения.
  8. Переменные и выражения.
  9. Условное ассемблирование. Выражения. Операторы, используемые в выражениях.

Регуля́рные выраже́ния (англ. regular expressions) — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). По сути это строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска.

Регулярные выражения произвели прорыв в электронной обработке текстов в конце XX века. Набор утилит (включая редактор sed и фильтр grep), поставляемых вдистрибутивах UNIX, одним из первых способствовал популяризации регулярных выражений для обработки текстов. Многие современные языки программированияимеют встроенную поддержку регулярных выражений. Среди них ActionScript, Perl, Java[1],PHP, JavaScript, языки платформы.NET Framework[2], Python, Tcl, Ruby, Lua,Gambas, C++ (стандарт 2011 года), Delphi, D и др.

Регулярные выражения используются некоторыми текстовыми редакторами и утилитами для поиска и подстановки текста. Например, при помощи регулярных выражений можно задать шаблоны, позволяющие:

· найти все последовательности символов «кот» в любом контексте, как то: «кот», «котлета», «терракотовый»;

· найти отдельно стоящее слово «кот» и заменить его на «кошка»;

· найти слово «кот», которому предшествует слово «персидский» или «чеширский»;

· убрать из текста все предложения, в которых упоминается слово кот или кошка.

Регулярные выражения позволяют задавать и гораздо более сложные шаблоны поиска или замены.

 

подшаблоны выделяют, заключая в круглые скобки.
Для их обозначения кроме термина «подшаблон» также используют термин «подвыражение».
Подшаблоны могут быть вложенными. Выделение части регулярного выражения в виде регулярного подвыражения делает следующее.

1. Локализует множество альтернатив.
2. Устанавливает подшаблон как «захватывающий» подшаблон. Это значит, что, когда какая-то подстрока в тексте совпала с шаблоном, все подстроки, которые совпали с подшаблонами этого РВ, тоже возвращаются в качестве результата. Скобки, обозначающие начало подшаблона, пересчитываются слева направо (начиная с 1) для того, чтобы узнать, сколько подшаблонов нужно захватить.
Например, имеется такой шаблон:
победитель получит
((золотую|позолоченный)
(медаль|кубок))

и строка, в которой ищутся совпадения с этим шаблоном: «победитель получит золотую медаль». Тогда кроме этой фразы будут еще захвачены и выданы как результаты поиска следующие совпадения в подвыражениях: «золотую медаль», «золотую», «медаль», пронумерованные 1, 2, 3 соответственно.

Однако это не всегда удобно. Для того чтобы избавиться от «захватывающего» эффекта подвыражения, после открывающей скобки пишут «?:». Тогда это подвыражение в результат поиска не включается и при нумерации остальных подшаблонов с «захватывающим» эффектом не учитывается.
победитель получит
((?:золотую|позолоченный)
(медаль|кубок))

Тогда в условиях предыдущего примера получим искомую строку «победитель получит золотую медаль» и строки «золотую медаль», «медаль», пронумерованные 1 и 2 соответственно.




Дата добавления: 2015-02-16; просмотров: 124 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.013 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав