Обратите внимание, что метасимвол | воспринимается как обычный символ внутри перечней символов, например, [fee|fie|foe] означает ровно то же самое что и [feio|].
‹(p|div)›.*‹/(p|div)› – найдет все корректно закрытые параграфы. Так же найдутся и включения вида ‹p›TEXT‹/div›, так что это выражение можно применять только на однородном тексте. Как альтернативный вариант можно предположить (‹div›.*‹/div›|‹p›.*‹/p›)
Заметьте, что применив то же выражение в жадном режиме (?g)‹(p|div)›.*‹/(p|div)› мы не найдем ничего полезного.
Оговорка. Выражения с метасимволом «|» в FB Editor в режиме исходника НЕ ФУНКЦИОНИРУЮТ.
Метасимволы – подвыражения
У скобок в регулярных выражениях двоякая функция
1. Скобки позволяют группировать элементы (аналогично математическому использованию)
2. Скобки выделяют в исходном тексте подвыражения, на которые можно ссылаться при замене.
Вы можете обратиться к любому подвыражению в строке заменыиспользуя его номер. Подвыражения нумеруются слева направо, в порядке появления открывающих скобок. Ссылка осуществляется в виде $N, где N-номер.
Примеры группировки:
(проба){8,10} – находит строку содержащую 8, 9 или 10 копий «проба»
про([0-9]|б+)а – находит «про0а», «про1а» , «проба», «пробба», и т.д.
Примеры замены:
‹p›(.*)‹/p› -››- ‹div›$1‹/div› – Заменит все параграфы на разделы
((\+\d )?\(\d{3}\) )?(\d{3}(-\d\d){2}) -››- $3 – Найдет в любом телефонном номере вида «+7 (095) 555-55-55» последнюю часть «555-55-55»
(?g)([\s\(]|\A|‹br›)(http://|ftp://|https://)([^\s\)"'‹›]+) -››- $1‹a href="$2$3"›$2$3‹/a› – Такая замена преобразует все URL, встреченные в тексте, в гиперссылки.
(?g)([\s\(]|\A|‹br›)(www.)([^\s\)"'‹›]+)-››-$1‹a href="http://$2$3"$target›$2$3‹/a› – Преобразует все строки типа www.domain.root в гиперссылки
Метасимволы – обратные ссылки
Метасимволы от \1 до \9 воспринимаются как обратные ссылки. \N совпадает с ранее найденным подвыражением #N. В отличие от случая с заменой, где используются переменные $N, обратные ссылки можно применять в выражении поиска.
Примеры группировки:
(.)\1+ – находит «aaaa» и «cc»
(.+)\1+ – также находит «abab» и «123123»
(['"]?)(\d+)\1 – находит «"13"» (в дв.кавычках), или «'4'» (в один.кавычках) или 77 (без кавычек)
Модификаторы
Модификаторы служат для изменения режимов работы регулярных выражений. Они вводятся в виде (?imsgr-imsgr). Если модификатор вписан после минуса – он отключается, если нет – включается. Модификаторы подвержены группировке (в Perl нет), можно применить модификатор для отдельного участка выражения (см. пример).
Модификаторы:
i – Регистро-независимый режим. Использует выбранный в ОС язык по умолчанию. По умолчанию выключено.
m – Воспринимать входной текст как многострочный, при этом метасимволы ^ и $ будут совпадать не только в начале и конце текста в целом, но и в начале и в конце всех имеющихся в тексте строк (см. также Разделители строк). По умолчанию включено.
s – Воспринимать входной текст как одну строку. При этом метасимвол «.» совпадает с любым символом, если же этот модификатор выключен, то он не совпадает с разделителями строк (см.также Стандартные перечни символов). По умолчанию включено.
g – Включая его Вы переключаете все повторители в «жадный» режим. По умолчанию включено.
r – Модификатор предназначенный для русского языка. Если включен, то диапазоны вида а-я включают также букву «ё», А-Я включают «Ё», а а-Я включает вообще все русские буквы. По умолчанию включено.
Примеры группировки:
(?i)Saint-Petersburg – находит «Saint-petersburg» и «Saint-Petersburg»
(?i) – Saint-(?-i)Petersburg – находит «Saint-Petersburg» но не «Saint-petersburg»
(?i)(Saint-)?Petersburg – находит «Saint-petersburg» и «saint-petersburg»
((?i)Saint-)?Petersburg – находит «saint-Petersburg», но не «saint-petersburg»
Оговорка. В FB Editor модификаторы НЕ ФУНКЦИОНИРУЮТ.