Выбери формат для чтения
Загружаем конспект в формате pptx
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
VBA
Регулярные выражения
Назначение
Регулярные выражения — это шаблоны (образцы), с помощью которых проводится
анализ символьных строк
Регулярные выражения реализованы в большинстве языков программирования.
•Различные реализации отличаются в деталях, но принципы создания регулярных
выражений везде одинаковы.
•Две основные задачи: поиск и замена
Основная операция при использовании регулярных выражений — это их
сопоставлениес символьными строками.
У этой операции возможны два результата. Если строка (или некоторая ее подстрока)
имеет содержание (набор символов) и/или структуру, отвечающую шаблону, то
результат сопоставление — удача. В противном случае — неудача.
Назначение
Механизм регулярных выражений позволяет "найти совпавший с образцом фрагмент
строки,и заменить его другим фрагментом", причем замена будет производиться
тоже по шаблону с учетом совпадений, например, символы, выявленных при
поиске строки, могут быть вставлены в замещающий фрагмент.
Основой механизма регулярных выражений являются шаблоны для нечеткого поиска
по тексту (т.е. поиска, допускающего варианты).
Паттерн или образец или шаблон (pattern) — задает правило поиска.
Назначение
Регулярные выражения (образцы, шаблоны) составляются из обычных и/или
специальных символов (метасимволов). Они формируются из отдельных элементов,
называемых атомами. В роли атомов могут выступать отдельные символы или группы
символов.
Самый простой шаблон — это обычный конкретный одиночный символ, который
сопоставляется только сам с собой.
Поэтому анализатор регулярных выражений пользуется следующим правилом: если в
регулярном выражении в некоторой позиции встретился конкретный символ
(например, буква), то для успеха сопоставления на соответствующем месте в
анализируемой строке должен находиться точно такой же символ.
Сопоставление производится с учетом регистров букв.
Назначение
Часто нужно указать, что в некоторой позиции строки может находиться любой
символ.
Заместитель произвольного символа в шаблонеиспользуется точка (шаблон "любой
символ").
Однако на "любой " есть ограничение. Как правило, символ новой строки «\n» в число
"любых" не включается
Пример.
9с /a./ — любая двух символьная последовательность, которая начинается с буквы а,
и не является последовательностью /a\n/.
Регулярны е вы раж ения WORD
escape-последовательности
еscape-символы — специальные символы, с помощью
которых можно изменять свойства следующих за ними
символов. Наличие escape-символа говорит о том, что
следующий за ним символ (или символы) следует
обрабатывать особым образом. Комбинация escapeсимвола и следующих за ним символов называется
escape-последовательностью.
С помощью еscape-символов формируются абзацы,
табуляция и прочие стили документа MS Office
Спец.
символ
ы
Ч то
обозна
чают
^p
Симво
л
конца
абзаца
(¶)
^?
Любой
симво
л
^#
Любая
цифра
^$
Любая
буква
^e
Конце
вая
сноск
а
^d
Поле
^f
Сноск
а
^b
Обрыв
секци
и(===
End of
section
=== )
^w
Любое
число
и
любая
комби
нация
обыкн
овенн
ых и
неразр
ываем
ых
пробе
лов,
табул
яций и
концов
абзаца
Специальны е символы WORD
Специальные символы, которые можно использовать только в том случае,
если опция Use wildcards (Подстановочные знаки) не задействована.
Спец. символы Что обозначают
^p
Символ конца абзаца (¶)
^?
Любой символ
^#
Спец.
символ
ы
Ч то
обозна
чают
^p
Симво
л
конца
абзаца
(¶)
^?
Любой
симво
л
^#
Любая
цифра
^$
Любая
буква
^e
Конце
вая
сноск
а
^d
Поле
^f
Сноск
а
^b
Обрыв
секци
и(===
End of
section
=== )
^w
Любое
число
и
любая
комби
нация
обыкн
овенн
ых и
неразр
ываем
ых
пробе
лов,
табул
яций и
концов
абзаца
Любая цифра
^$
Любая буква
^e
Концевая сноска
^d
Поле
^f
Сноска
^b
Обрыв секции(===End of section===)
^w
Любое число и любая комбинация обыкновенных и неразрываемых пробелов, табуляций и концов
абзаца
Специальны е символы WORD
Специальные символы, использование которых не зависит от опции Use
wildcards (Подстановочные знаки).
Спец. символы
Что обозначают
^t
Символ табуляции (®)
^a
Комментарий
Спец.
символ
ы
Ч то
обозна
чают
^p
Симво
л
конца
абзаца
(¶)
^?
Любой
симво
л
^#
Любая
цифра
^0nnn
Любой ANSI или ASCII символ с кодом nnn
^^
Символ ^
^$
Любая
буква
^e
Конце
вая
сноск
а
^d
Поле
^f
Сноск
а
^g
Графика
^n
Обрыв колонки(···Column Break···)
^l
Принудительный обрыв строки (¿)
^m
Принудительный обрыв страницы (---Page Break---). Если опция Use wildcards
задействована, то ищет и принудительный обрыв страницы, и обрыв секции.
^+
Длинное тире (—). Символ с кодом 0151.
^=
Короткое тире (–). Символ с кодом 0150.
^s
Неразрываемый пробел (°)
^~
Неразрываемый дефис (-)
^-
Мягкий перенос (¬)
^b
^w
Обрыв
секци
и(===
End of
section
=== )
Любое
число
и
любая
комби
нация
обыкн
овенн
ых и
неразр
ываем
ых
пробе
лов,
табул
яций и
концов
абзаца
Специальны е символы WORD
Подстановочные знаки, которые можно использовать только в том случае,
если опция Use wildcards (Подстановочные знаки) задействована.
Спец.
знаки
Что обозначают
Пример
строки
поиска
?
Один любой символ
б?к
*
Любое число любых символов
б*к
[]
Один из указанных символов
б[аоу]к
[-]
[!]
[!x-z]
[а-яё]
Один символ из диапазона.Диапазон
должен быть указан в порядке возрастания
[А-ЯЁ]
кодов символов.
[0-9]
Один любой символ не указанный после
б[!ы]к
восклицательного знака
Один любой символ, не входящий в
[!а-яё]ок
диапазон указанный после
восклицательного знака
[!0-9]
Что будет находить
бак, бок, бук, б5к, б¶
к и т. п.
бык, бардак, белый.¶
Полковник и т. п.
бак, бок, бук
Любая строчная русская буква
Любая прописная русская
буква
Любая цифра
бак, бок и т. п., но не бык
Бок, Док и т. п., но не бок, док
Любой символ кроме цифр
Специальны е символы WORD
Подстановочные знаки, которые можно использовать только в том случае,
если опция Use wildcards (Подстановочные знаки) задействована.
Пример
Спец.
Что обозначают
строки
Что будет находить
знаки
поиска
Строго n штук предыдущего символа 10{3}
1000, но не 100, 10000
или выражения.Выражением является
{n}
все то, что заключено в круглые
102020, но не 1020,
скобки. Выражение может состоять 10(20){2}
10202020
как из конкретных символов, так и
содержать спец. знаки.
n и более штук предыдущего символа
1000, 10000, 100000 и т. д.,
{n;}
10{3;}
или выражения
но не 100
От n до m штук предыдущего
1000, 10000, но не 100,
{n;m}
10{3;4}
символа или выражения
100000
Ноль или более штук предыдущего
@
10@
10, 100, 1000, 10000 и т. д.
символа или выражения
<
Начало слова
<бок
боксер, но не колобок
>
Конец слова
бок>
колобок, но не боксер
Примеры
Опция Use wildcards (Подстановочные знаки) должна быть задействована в
диалоге поиска и замены.
Строка поиска
Что будет находить
[!^0013]^0013[!^0013]
Одиночный конец абзаца в окружении двух неконцов. (Подробный разбор см. ниже).
^0013{2;}
Два и более конца абзацев
^0032{2;}
Два и более пробела
[.,:;\!\?]
Знак препинания ( . , : ; ! ? )
[0-9]^0032[0-9]
Две цифры, разделенные пробелом
Спец.
символ
ы
Ч то
обозна
чают
^p
Симво
л
конца
абзаца
(¶)
^?
Любой
симво
л
^#
Любая
цифра
^$
Любая
буква
^e
Конце
вая
сноск
а
^d
Поле
^f
Сноск
а
[0-9]^0032[A-Za-zА-яЁё]
Цифра и буква (английская или русская) разделенные пробелом.(Подробный разбор см. ниже).
-[0-9]
Дефис и цифра
<[0-9]@-[0-9]@>
Два целых числа, разделенные дефисом
\([0-9]\)
Цифра в круглых скобках
<[0-9]@>
Целое число (точнее — непрерывная последовательность цифр)
^b
^w
Обрыв
секци
и(===
End of
section
=== )
Любое
число
и
любая
комби
нация
обыкн
овенн
ых и
неразр
ываем
ых
пробе
лов,
табул
яций и
концов
абзаца
<[0-9]@,[0-9]@>
Десятичная дробь, набранная через запятую
<[A-Za-z]@>
Английское слово
<[А-яЁё]@>
Русское слово
<[А-ЯЁ][а-яё]@>
Русское слово, набранное строчными буквами, но с прописной.(Подробный разбор см. ниже).
Примеры
1 символ строки поиска
Любой символ, но не конец
абзаца
[!^0013]
[!^0013]^0013[!^0013]
2 символ
3 символ
Конец абзаца
^0013
В квадратных скобках указан
символ с кодом 0013 (конец
Конец абзаца
абзаца). Знак «!» указывает на
(символ с кодом
то, что в этой позиции может
0013).
находится любой символ кроме
конца абзаца.
Любой символ, но не конец абзаца
[!^0013]
В квадратных скобках указан символ
с кодом 0013 (конец абзаца).Знак «!»
указывает на то, что в этой позиции
может находится любой символ
кроме конца абзаца.
Примеры
[0-9]^0032[A-Za-zА-яЁё]
1 символ строки поиска 2 символ
3 символ
Любая цифра
Пробел
Любая буква (английская или русская)
[0-9]
^0032
[A-Za-zА-яЁё]
Допустимый символ определен тремя диапазонами и
Пробел
двумя конкретными символами.A-Z — английские
В квадратных скобках
(символ с прописные буквы;а-z — английские строчные
указан диапазон знаков
кодом
буквы;А-я — русские прописные и строчные
от 0 до 9, т. е. цифры.
0032).
буквы;Ёё — прописная и строчная ё (чтобы охватить
весь русский алфавит).
Примеры
<[А-ЯЁ][а-яё]@>
1 позиция строки поиска
Любая русская прописная
буква
<[А-ЯЁ]
В квадратных скобках
указан диапазон знаков от
А до Я и Ё (т. е. любая
русская прописная
буква).Знак «<»указывает
на то, что прописная буква
должна быть в начале
слова.
2 позиция
Спец.
символ
ы
Ч то
обозна
чают
^p
Симво
л
конца
абзаца
(¶)
Любые русские строчные буквы
[а-яё]@>
^?
Любой
симво
л
^#
Любая
цифра
^$
Любая
буква
^e
Конце
вая
сноск
а
^d
Поле
^f
Сноск
а
Диапазон в квадратных скобках определяет все
русские строчные буквы.Знак «@» говорит о том,
что число русских строчных букв может быть
равным или больше нуля.Знак «>» указывает на
конец слова.
^b
Обрыв
секци
и(===
End of
section
=== )
^w
Любое
число
и
любая
комби
нация
обыкн
овенн
ых и
неразр
ываем
ых
пробе
лов,
табул
яций и
концов
абзаца
Операции с вы ражениями
Для работы с выражениями задействуйте опцию Use wildcards (Подстановочные знаки).
В строке поиска выражением является все то, что заключено в круглые скобки. Выражение может
состоять как из конкретных символов, так и содержать подстановочные знаки или специальные
символы. Порядок следования выражений определяет их нумерацию.
В строке замены выражения представляются в виде: \n, где n — номер выражения в строке
поиска.
Строка поиска
Строка замены
\3 \2\1
Спец.
символ
ы
Ч то
обозна
чают
^p
Симво
л
конца
абзаца
(¶)
^?
Любой
симво
л
^#
Любая
цифра
^$
Любая
буква
^e
Конце
вая
сноск
а
^d
Поле
^f
Сноск
а
^b
Обрыв
секци
и(===
End of
section
=== )
\1\3 с хрустом \2
Результат поиска и замены
грушу ест Сережа.
Сережа грушу с хрустом ест .
(Сережа )(ест )(грушу).
\1и Катя едят \3
\1\2\3 и Катя \2\3
^w
Любое
число
и
любая
комби
нация
обыкн
овенн
ых и
неразр
ываем
ых
пробе
лов,
табул
яций и
концов
абзаца
Сережа и Катя едят грушу.
Сережа ест грушу и Катя ест грушу.
Примеры поиска и замены
.
Строка поиска
([!^0013]^0013)([!^0013])
(^0013){2;}
^0032{2;}
^0032([.,:;\!\?])
([0-9])^0032([0-9])
Строка замены
Спец.
символ
ы
Ч то
обозна
чают
^p
Симво
л
конца
абзаца
(¶)
^?
Любой
симво
л
^#
Любая
цифра
^$
Любая
буква
^e
Конце
вая
сноск
а
^d
Поле
^f
Сноск
а
^b
Обрыв
секци
и(===
End of
section
=== )
\1^0013\2
\1
^0009
\1
Результат поиска и замены
Вставка пустой строки между теми абзацами,
между которыми пустой строки не было.
Удаление пустых строк
Замена двух или более пробелов на табуляцию
Удаление пробела перед знаком препинания
(.,:;!?)
Замена пробела между цифрами на
неразбиваемый пробел
\1^s\2
([0-9])^0032([A-Za-zА-яЁё]) \1^s\2
^w
Любое
число
и
любая
комби
нация
обыкн
овенн
ых и
неразр
ываем
ых
пробе
лов,
табул
яций и
концов
абзаца
Замена пробела между цифрой и буквой
(английской или русской) на неразбиваемый
пробел
-([0-9])
^0150\1
Замена дефиса перед цифрой на минус
\(([0-9])\)
[\1]
Замена круглых скобок вокруг цифры на
квадратные
Примеры
.
Строка поиска
Ивано([а-я]@>)
Строка
замены
Петро\1
Результат поиска и замены
Спец.
символ
ы
Ч то
обозна
чают
^p
Симво
л
конца
абзаца
(¶)
Замена фамилии Иванов на фамилию
Петров сразу во всех падежах
^?
Любой
симво
л
^#
Любая
цифра
^$
Любая
буква
^e
Конце
вая
сноск
а
В документе очень много десятичных дробей. Часть дробей набрана через
точку, часть - через запятую.
(<[0-9]@).([09]@>)
\1,\2
^d
Поле
^f
Сноск
а
^b
Обрыв
секци
и(===
End of
section
=== )
Десятичная точка будет заменена на
запятую
^w
(<[0-9]@),([09]@>)
\1.\2
Любое
число
и
любая
комби
нация
обыкн
овенн
ых и
неразр
ываем
ых
пробе
лов,
табул
яций и
концов
абзаца
Десятичная запятая будет заменена на точку