Создание электронных книг в формате FictionBook 2.1: практическое руководство (СИ) - Кондратович Михаил Иосифович "Юзич"
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 не ограничена, но рекомендуется не задавать большие значения, поскольку в некоторых ситуациях это может потребовать существенных затрат времени и ОЗУ при обработке такого повторителя.