RegexParserFunction
RegexParserFunction |
- Реализует:
- Perl-совместимые регулярные выражения
- Системные требования:
- MediaWiki
- Разработчик:
- Александр Машин на основании идеи Джима Р. Уилсона
- Дата появления:
- 2011
- Текущая версия:
- 0.98
- Статус:
- бета-версия
RegexParserFunction — расширение MediaWiki, реализующее функцию парсера {{#regex:}}
для поиска и замены в строках с помощью Perl-совместимых регулярных выражений, разработанное специально для «Традиции» Александром Машиным на основании идеи Джима Р. Уилсона.
Возможности и использованиеПравить
Функция {{#regex:}}
позволяет провести поиск, замену и множественную замену, в том числе, с условными переходами. Синтаксис регулярных выражений — Perl-совместимые регулярные выражения PHP с некоторыми ограничениями для безопасности.
Эта функция парсера — необходимая часть Summary.
ИсторияПравить
Поддержка регулярных выражений понадобилась в «Традиции» в ходе развития семантических возможностей шаблонов Summary, когда потребовалось различать и правильно обрабатывать значения параметров, которые могли содержать или не содержать обрамляющие скобки [[]]
, включать несколько значений свойств Semantic MediaWiki, а также примечания или разметку, не подлежащие семантическому аннотированию.
Первоначально использовалось расширение MediaWiki RegexParserFunctions Джима Р. Уилсона.
Затем, однако, понадобилось расширение функциональности:
- было желательно упростить громоздкий синтаксис обработки строки несколькими выражениями подряд, для чего приходилось вкладывать вызовы функции друг в друга,
- для дальнейшего развития Summary потребовалась возможность передавать в одном параметре несколько последовательных поисков и замен,
- потребовалась также возможность выполнять обработку выражением, только если обработка одним из предыдущих была неудачна.
Тогда и было разработано это расширение, позволяющее проводить множественную замену (несколькими парами параметров с версии 0.3, в одном параметре — мультирегулярном выражении — с версии 0.9) и поддерживающее условные переходы: относительные (синтаксис ^1
) с версии 0.9 и абсолютные (синтаксис ^метка
) с версии 0.96; при успехе с версии 0.9 и неуспехе (синтаксис ^!1
) с версии 0.98.
В функцию парсера в режиме поиска были также добавлены некоторые возможности, роднящие её с функцией для семантических запросов {{#ask:}}
: разделитель списка (sep
), шаблон для обёртки найденных совпадений (template
), ограничение на число совпадений (limit
; работает и при замене; с версии 0.9), вступление (intro
), заключение (outro
) и значение по умолчанию (default
). Кроме того, параметр subpattern
задаёт номер подобразца, который должен быть возвращён в режиме поиска вместо всего найденного образца (т.е. \0
).
Из другого расширения MediaWiki, ReplaceSet Даниэля Фризена, в версию 0.95 была заимствована идея передачи регулярного выражения и заменяющей строки в одном именованном параметре: /поиск/ = замена
.
Начиная с версии 0.97, при замене, включая множественную, возможно использование, вместо строки замены, шаблона, которому в качестве параметров будут переданы найденные совпадения и подстроки. Синтаксис вызова шаблона — /поиск/ = ((шаблон))
. Начиная с версии 0.98 допустимы форматированные, в том числе, многострочные, регулярные выражения (опция x
).