MiniM. Saving time.


| About | Download | Tools | Knowledge Base | How to Buy |

MiniM Overview

Getting Started

Download

Documentation

Tools

Cache Tools

GT.M Tools

Knowledge Base

FAQ

Contacts

Copyrights

MiniM Knowledge Base | ENG | Jul 26, 2011

Некоторые полезные регулярные выражения

Регулярные выражения по своей силе и выразительности могут считаться еще одним языком программирования и быть чрезвычайно полезными в серверах приложений, обрабатывающих пользовательский ввод, входящие внешние данные и многих других задачах.

В определении языка MUMPS не содержится поддержка регулярных выражений. Ближайшим к ним понятием являются шаблоны сопоставления (patterns). Для расширения возможностей серверов приложений построенных на MiniM Database Server введены дополнительные системные функции:

  • $ZPCREM[ATCH] для проверки соответствия строки регулярному выражению
  • $ZPCRES[EARCH] для поиска в строке указанных регулярным выражением вхождений
  • $ZPCRER[EPLACE] для замены по указанному регулярному выражению

Префикс PCRE обозначает Perl Compatible Regular Expressions. Эти функции построены на библиотеке pcre. Ниже приводятся некоторые из полезных регулярных выражений.

Во многих случаях программисты обращаются также к специальным библиотекам регулярных выражений. Практически все они могут быть использованы в 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

Евгений Каратаев
support@minimdb.com


Copyright (C) 2017 Eugene Karataev
Emails: Info Tech Support