Библиотека knigago >> Компьютеры: Языки и системы программирования >> Другие языки и системы программирования >> Регулярные выражения


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1344, книга: Козье болото
автор: Анастасия Викторовна Астафьева

Ребятки, вы просто обязаны прочитать эту книжку! Невероятные сказки Анастасии Астафьевой перенесут вас в волшебный мир, где живут добрые и злые персонажи, происходят чудеса и побеждает добро! "Козье болото" - это кладезь русских традиций и мудрости, которые подаются в легком и увлекательном формате. Сказки не только развлекают, но и учат детей важным жизненным урокам, таким как честность, смелость и забота о слабых. Особо хочу отметить красочные иллюстрации, которые дополняют текст...

СЛУЧАЙНАЯ КНИГА

Михаил Купаев - Регулярные выражения

Регулярные выражения
Книга - Регулярные выражения.  Михаил Купаев  - прочитать полностью в библиотеке КнигаГо
Название:
Регулярные выражения
Михаил Купаев

Жанр:

Другие языки и системы программирования, Статьи и рефераты, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Регулярные выражения"

Регулярные выражения — это один из способов поиска подстрок (соответствий) в строках. Осуществляется это с помощью просмотра строки в поисках некоторого шаблона. Общеизвестным примером могут быть символы «*» и «?», используемые в командной строке DOS. Первый из них заменяет ноль или более произвольных символов, второй же — один произвольный символ. Так, использование шаблона поиска типа "text?.*" найдет файлы textf.txt, text1.asp и другие аналогичные, но не найдет text.txt или text.htm. Если в DOS использование регулярных выражений было крайне ограничено, то в других местах (то есть операционных системах и языках программирования) они почти достигли уровня высокого искусства. «Почти» потому, что предметы высокого искусства практически невозможно употреблять в повседневной жизни. Более сложным примером применения регулярных выражений может быть удаление мусора, внесенного Microsoft Word при сохранении документа в формате HTML. Разработчики Word умудрились все сделать по-своему, в результате чего HTML-документ порой становится больше исходного DOC-файла за счет огромного количества понятных только IE5 тегов, вычистить которые вручную нет никакой возможности.

Читаем онлайн "Регулярные выражения". [Страница - 3]

стр.
MatchCollection
re.Pattern = "pattern"
re.Global = True ' для поиска по всему тексту.
Set matchs = re.Execute("this is just one test")
Dim m As VBScript_RegExp.Match
List1.Clear
For Each m In matchs
List1.AddItem m.Value & " Ndx " & m.FirstIndex & " Len " & m.Length
Next
В других языках все выглядит аналогично.
Perl разделяет составные части определения регулярного выражения символами "/". Выглядит это примерно так:
expression =~ m/pattern/[switches]
Такое выражение выполняет поиск подстроки, соответствующий шаблону 'pattern' в строке expression и возвращает найденные подстроки ($1, $2, $3, ...). "m" означает "match", т.е. соответствие. Например,
$test = "this is just one test";
$test =~ m/(o.e)/
вернет "one" в $1.
Для замены применяется выражение
expression =~ s/pattern/new text/[switches]
Это выражение, как несложно догадаться, заменяет "pattern" на "new text". Например:
$test = "this is just one test";
$test =~ s/one/my/
заменит one на my, в результате давая "this is just my test", сохраняемое в $test.
В Perl используются те же опции, что и в .Net, кроме "n" и "r". В других реализациях библиотек регулярных выражений опций меньше, либо вовсе нет. Так, в приведенном выше примере на VB настройки производятся через свойства объекта RegExp. Ниже примеры будут даваться в основном в стиле Perl.
Основы синтаксиса регулярных выражений
Я не стану пытаться написать полный справочник по всем символам, используемым в шаблонах регулярных выражений. Для этого есть другие источники. Здесь мы приведем только основные метасимволы.
В двойных кавычках далее будут употребляться значения, выдаваемые регулярными выражениями, а в одинарных – синтаксис регулярных выражений.
В Perl метасимволы, которые вы хотите использовать не как таковые, а как собственно символы, должны быть прикрыты escape-символом \, как в С++ (в других языках может быть иначе, например, в VB это не нужно). То есть, чтобы найти "[", нужно писать '\['. Символ \ означает, что идущий за ним символ – это спецсимвол, константа и так далее. Например, 'n' означает букву "n". '\n' означает символ новой строки. Последовательность '\\' соответствует "\", а '\(' соответствует "(".
Символ '.' соответствует любому символу, кроме '\n' (если не используется опция 's', увы, доступная только в Perl 5-совместимых реализациях). Чтобы найти любой символ, включая \n, используйте что-нибудь вроде '[.\n]'.
Искомые выражения
Выражением может быть один символ или последовательность символов, заключенных в круглые или квадратные скобки. Особенности использования скобок будут описаны ниже.
Классы символов (Character class)
Используя квадратные скобки, можно указать группу символов (это называют классом символов) для поиска. Например, конструкция 'б[аи]ржа' соответствует словам «баржа» и «биржа», т.е. словам, начинающимся с «б», за которым следуют «а» или «и», и заканчивающимся на «ржа».
Возможно и обратное, то есть, можно указать символы, которых не должно содержаться в найденной подстроке. Так, '[^1-6]' находит все символы, кроме цифр от 1 до 6. Следует упомянуть, что внутри класса символов '\b' обозначает символ backspace (стирания).
Квантификаторы, они же умножители (Quantifiers)
Если неизвестно, сколько именно знаков должна содержать искомая подстрока, можно использовать спецсимволы, именуемые мудреным словом квантификаторы (quantifiers). Например, можно написать "hel+o", что будет означать слово, начинающееся с "He", со следующими за ним одно или несколько "l", и заканчивающееся на "о". Следует понять, что квантификатор относится к предшествующему выражению, а не отдельному символу.
Список квантификаторов вы можете найти в таблице 2.
Символ
Описание
*
Соответствует 0 или более вхождений предшествующего выражения. Например, 'zo*' соответствует "z" и "zoo".
+
Соответствует 1 или более предшествующих выражений. Например, "zo+" соответствует "zo" and "zoo", но не "z".
?
Соответствует 0 или 1 предшествующих выражений. Например, 'do(es)?' соответствует "do" в "do" or "does".
{n}
n – неотрицательное целое. Соответствует точному количеству вхождений. Например, 'o{2}' не найдет "o" в "Bob",но найдет два "o"' в "food".
{n,}
n – неотрицательное целое. Соответствует вхождению, повторенному не менее n раз. Например, 'o{2,}' не находит "o" в "Bob", зато находит все "o" в "foooood". 'o{1,}' эквивалентно 'o+'. 'o{0,}' эквивалентно 'o*'.
{n,m}
m и n – неотрицательные целые числа, где n Будучи примененным к файлу С++, выделяет комментарии, строки и идентификаторы "new", "static char" и "const". Работает и на старом RegExp:
("(\\"|\\\\|[^"])*"|/\*.*\*/|//[^\r]*|#\S+|\b(new|static char|const)\b)
Выделяет тег в HTML-коде:
--">
стр.

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.