Добавить в цитаты Настройки чтения

Страница 46 из 49



tat tt Татарский

tur tr Турецкий

uzb uz Узбекский

ukr uk Украинский

cym/wel cy Уэльский

fin fi Финский

fra/fre fr Французский

che Чеченский

ces/cze cs Чешский

hr Хорватский

sve/swe sv Шведский

epo eo Эсперанто

est et Эстонский

jpn ja Японский

Приложение Д

Регулярные выражения

==Важно! ========================

Это описание было заимствовано из документации к программе Дмитрия Грибова СlearTXT. Реализация регулярных выражений в FB Editor  несколько отличается от СlearTXT. Поэтому, эта документация справедлива для FBE лишь с некоторыми оговорками.

Хотя, в связи с тем, что регулярные выражения используются не только в FB Editor, но и в других программах, упомянутых в книге, было принято волевое решение привести это описание здесь полностью.

===============================

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

На первый взгляд регулярные выражения выглядят страшновато (ну хорошо, на второй — еще страшнее ;) ). Однако вы очень быстро оцените всю их мощь. Они избавят вас от длительного и нудного ручного поиска/замены/правки, а в некоторых случаях дадут вам возможности, реализация которых «ручками» даже не придет вам в голову.

Это простейшие случаи подстановок.

xNN — символ с шестнадцатеричным кодом NN

t — табуляция (HT/TAB), можно также x09

n — новая строка (NL), можно также x0a

r — возврат каретки (CR), можно также x0d

Пример: rn — поиск разрыва строки (Windows, DOS).

Можно определить перечень, заключив символы в «[]». Перечень будет совпадать с любым одним символом, перечисленным в нем.

Если первый символ перечня (сразу после «[») — «^», то такой перечень совпадает с любым символом, не перечисленным в перечне.

Внутри перечня символ «-» может быть использован для определения диапазонов символов, например, a-z представляет все символы между «a» и «z», включительно.

Если необходимо включить в перечень сам символ «-», его нужно поместить в начало или конец перечня или предварить «». Если необходимо поместить в перечень сам символ «]», поместите его в самое начало или предварите «».

Примеры:

п[иа]р — будут найдены буквосочетания «пир» и «пар». Но, допустим, не «пор».

п[^иа]р — будут найдены буквосочетания «п…р» с любым символом между «п» и «р», кроме «и» и «а».

[-az] — «a», «z» и «-»

[az-] — «a», «z» и «-»

[a-z] — «a», «z» и «-»

[a-z] — все 26 малых латинских букв от «a» до «z»

[n-x0D] — #10, #11, #12, #13

[d-t] — цифра, «-» или «t»

[]-a] — символ из диапазона «]»..«a»

Оговорка. В FB Editor в режиме исходника  перечни, содержщие кирииллицу ФУНКЦИОНИРУЮТ НЕПРАВИЛЬНО.

Метасимволы — это специальные символы, являющиеся важнейшим понятием в регулярных выражениях. Существует несколько групп метасимволов.

• Разделители строк (начало строки, конец строки и т.п.)

• Стандартные перечни символов (цифры, буквы и цифры и т.п.)



• Границы слов (показывают, что вхождение должно быть на границе слова)

• Повторения (указывает, сколько раз должна присутствовать последовательность)

• Варианты (позволяет указать набор масок, с любой из которых должен совпадать текст)

• Подвыражения (используются при замене)

• Обратные ссылки (способ обратиться к подвыражениям при поиске)

Разделители и границы

^ — начало строки

$ — конец строки

A — начало текста

Z — конец текста

b — Совпадает на границе слова

B — Совпадает НЕ на границе слова

Примеры:

^Все — Находит все строки в тексте, начинающиеся словом «Все»

bмир — Находит все слова, начинающиеся буквосочетанием «мор». Слова будут найдены и в начале строк, и в середине.

^x20$ — Находит все строки в тексте, состоящие из единственного пробела.

Метасимволы — стандартные перечни символов

. (точка) — Любой символ

w — буквенно-цифровой символ или "_"

W — не w

d — цифровой символ

D — не d

s — любой «пробельный» символ: [x20tnrf]

S — не s

Метасимвол «.» по умолчанию совпадает с любым символом, однако, если выключить модификатор s ((?-s), синтаксис см. ниже), то «.» не будет совпадать с разделителями строк.

Стандартные перечни w, d и s можно использовать и внутри перечней символов .

Примеры:

—foob[ws]r — —находит «foobar», «foob r», «foobbr» но не «foob1r», «foob=r»

—+d (ddd) ddd-dd-dd — —Находит телефон в формате «+7 (095) 555-55-55»

Метасимволы — повторения

После любого элемента регулярного выражения может следовать очень важный тип метасимвола — повторитель . Используя их Вы можете определить число допустимых повторений предшествующего символа, метасимвола или подвыражения.

Указание числа вхождений

* — ноль или более раз (может быть «жадным»), то же что {0,}

+ — один или более раз (может быть «жадным»), то же что {1,}

? — ноль или один раз (может быть «жадным»), то же что {0,1}

{n} — точно n раз (может быть «жадным»)

{n,} — не менее n раз (может быть «жадным»)

{n,m} — не менее n но не более m раз (может быть «жадным»)

*? — ноль или более раз («не жадный»), то же что {0,}?

+? — один или более раз («не жадный»), то же что {1,}?

?? — ноль или один раз («не жадный»), то же что {0,1}?

{n}? — точно n раз («не жадный»)

{n,}? — не менее n раз («не жадный»)

{n,m}? — не менее n но не более m раз («не жадный»)

Т.о. {n,m} задает минимум n повторов и максимум — m. Повторитель {n} эквивалентен {n,n} и задает точно n повторов. Повторитель {n,} задает минимум n повторов. Теоретически величина параметров n и m не ограничена, но рекомендуется не задавать большие значения, поскольку в некоторых ситуациях это может потребовать существенных затрат времени и ОЗУ при обработке такого повторителя.