Регулярные выражения по своей силе и выразительности могут
считаться еще одним языком программирования и быть чрезвычайно полезными в
серверах приложений, обрабатывающих пользовательский ввод, входящие внешние
данные и многих других задачах.
В определении языка MUMPS не содержится поддержка регулярных выражений. Ближайшим к ним понятием являются шаблоны сопоставления (patterns). Для расширения возможностей серверов приложений построенных на MiniM Database Server введены дополнительные системные функции:
Во многих случаях программисты обращаются также к специальным библиотекам регулярных выражений. Практически все они могут быть использованы в MiniM с учетом синтаксиса и значения аргументов функций $ZPCREXXX.
Удалить лидирующие пробелы
В определении языка MUMPS не содержится поддержка регулярных выражений. Ближайшим к ним понятием являются шаблоны сопоставления (patterns). Для расширения возможностей серверов приложений построенных на MiniM Database Server введены дополнительные системные функции:
- $ZPCREM[ATCH] для проверки соответствия строки регулярному выражению
- $ZPCRES[EARCH] для поиска в строке указанных регулярным выражением вхождений
- $ZPCRER[EPLACE] для замены по указанному регулярному выражению
Во многих случаях программисты обращаются также к специальным библиотекам регулярных выражений. Практически все они могут быть использованы в MiniM с учетом синтаксиса и значения аргументов функций $ZPCREXXX.
Удалить лидирующие пробелы
USER>s str=" abc def " USER>s regexp="^\s+" USER>w """",$zpcrer(str,regexp,""),"""" "abc def "Удалить завершающие пробелы
USER>s str=" abc def " USER>s regexp="\s+$" USER>w """",$zpcrer(str,regexp,""),"""" " abc def"Удалить лидирующие и завершающие пробелы
USER>s str=" abc def " USER>s regexp="^\s+|\s+$" USER>w """",$zpcrer(str,regexp,"","g"),"""" "abc def"Удалить повторяющиеся пробелы между словами не трогая лидирующих и завершающих
USER>s str=" abc def " USER>s regexp="(\w)( )+(\w)" USER>w """",$zpcrer(str,regexp,"$1 $3","gp"),"""" " abc def "Заменить последовательности двух и более пробелов на одиночный с удалением лидирующих и завершающих пробелов
USER>s str=" abc def " USER>s regexp="^\s+|(?<=\s)( )+|\s+$" USER>w """",$zpcrer(str,regexp,"","g"),"""" "abc def"Удалить с начала строки все небуквенные символы
USER>s str=" abc def " USER>s regexp="^([[:^alpha:]])+" USER>w """",$zpcrer(str,regexp,""),"""" "abc def "Получить список всех последовательностей цифр
USER>s str=" 123 789.as456ee333" USER>s regexp="\d+" USER>s found=$zpcres(str,regexp,"g") USER>f i=1:1:$ll(found) w $lg(found,i),! 123 789 456 333Простая проверка IP адреса
USER>s regexp="^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$" USER>w $zpcrem("127.0.0.1",regexp),! 1 USER>w $zpcrem("222.333.444.555",regexp),! 1Полная проверка IP адреса
USER>s r="^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$" USER>w $zpcrem("127.0.0.1",r),! 1 USER>w $zpcrem("222.333.444.555",r),! 0
Комментариев нет:
Отправить комментарий