MassEditRegex
Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску
Поле страниц
Поле поиска
Операторы
Формирование запросов
Для понимания работы регулярных выражений сходить на интерактивный полигон, RegExr — лучший из мне известных, ставим режим replace,
- первое окно — что искать, обязательно ставим флаг global, иначе будет только 1 вхождение на странице. Для вики /g не нужен, кроме того он ищет только внутри строки, так что выделить 3 сроки одним выражением не получится.
- второе — что вставлять
- третье исходный текст
- ниже — что получилось
- что в итоге надо будет отдать страничке Служебная:MassEditRegex/MassEditRegex, там выражения уже с флагами.
Копируешь кусок кода страницы и начинаешь колдовать.
Пример поиска на странице квадратных ссылок.
Ищем
\[\[(?!Category:|Категория:|en:)(.*?)\]\]
Вставляем
[[$1]]
Маска поиска для MassEditRegex
/\[\[(?!Category:|Категория:|en:)(.*?)\]\]/m
Как это работает:
- квадратные скобки используются для перечисления набора символа для поиска , чтобы скобка считалась просто текстом ставим косую черту \
- [a-c] значит найти a,b или c
- \[a-c\] значит найти текст "[a-c]"
- (?:<текст1>|<текст2>|...) значит найти любое из указанных слов
- (?!<текст1>|<текст2>|...) значит найти только не указанные слова
- любой символ — это точка
- если надо повторить предыдущее действие, то используем квантификаторы:
- * — 0 или больше предыдущих символов или множеств, жадная версия
- .* сколько угодно символов, даже 0
- [a-c]* — сколько угодно букв abc, даже 0
- ? после любого символа, кроме звёздочки — встреча символа 0 или 1 раз
- .? символ, если есть
- [a-c]? — один из указанных символов, если есть
- *? — особый случай, называется "ленивая версия", в 99% случаев именно её и надо использовать, а не жадную. Например, текст abbbbbabbba будет разбираться:
- a.*a отдаст abbbbbabbba , .* пожрала все буквы, отдав только последнее вхождение
- a.*?a отдаст abbbbba , .*? глотала буквы до первой же, понадобившейся хвосту регулярного выражения
- более яркий пример, текст "надета [[cloth|тканая]] одежда, оружие и [[armor|броня]] небольшого"
- \[\[.*\]\] отдаст "[[cloth|тканая]] одежда, оружие и [[armor|броня]]"
- \[\[.*?\]\] отдаст "[[cloth|тканая]]", т.к. остановится на первой же паре закрывающих скобок
- Символ + после любого символа или скобок — 1 или больше раз повторить. Работает как и *, но не выбирает 0 символов.
- * — 0 или больше предыдущих символов или множеств, жадная версия
- Если в результат надо втсавить кусок искомого текста, то в поиске его надо выделить круглыми скобками, а в выводе в место подстановки написать $1 — для первых скобок, $2 для вторых и т.д.
- (?:) и {?!} не считаются перечисляющими скобками.
Поле замены
==Примеры==