Строковые функции

From SunFlurry wiki
Jump to: navigation, search
  Строковые функции
Статус разработки: Реализован

Строковые функции работают со строками, их модификацией и превращением в разные кодировки и пр. Важно понимать, что в системе есть два вида строковых объектов -- однобайтовый (ANSI) и многобайтовый (Unicode). Более подробно см. Строки.

Основные функции

Идентификатор Статус Тип Визуальная Параметры Описание
Str Реализована Функция Str(<Аргумент>,<Тип>=0):<Строковое представление (STRING)> Превращение объекта в строковое представление с возможностью указания типа получаемой строки.
StringTypeStr Реализована Функция StringTypeStr(<Аргумент>):<Тип строкового аргумента (STRING)> Функция возвращает строку "ANSI", в случае, если строковое представление аргумента использует однобайтовую кодировку (ANSI), иначе будет возвращена строка "UNICODE"
Length Реализована Функция Length(<Аргумент>):<Длина строки в символах (INT)> Нахождение длины строки
IsBlankString Реализована Функция IsBlankString(<Аргумент>):<1 или 0 (INT)> Функция проверяет, является ли аргумент пустой строкой (в строке позволяются пробелы, знаки табуляции и знаки перевода строки)
TrimL Реализована Функция TrimL(<Аргумент>):<Результат (STRING)> Функция убирает пробелы, знаки табуляции и знаки переноса строки с начала строки строкового аргумента.
TrimR Реализована Функция TrimR(<Аргумент>):<Результат (STRING)> Функция убирает пробелы, знаки табуляции и знаки переноса строки с конца строки строкового аргумента.
Trim Реализована Функция Trim(<Аргумент>):<Результат (STRING)> Функция убирает пробелы, знаки табуляции и знаки переноса строки с начала и с конца строки строкового аргумента.
Left Реализована Функция Left(<Аргумент>,<Количество символов (INT)>):<Результат (STRING)> Функция получает левую часть строки аргумента с указанным размером
Right Реализована Функция Right(<Аргумент>,<Количество символов (INT)>):<Результат (STRING)> Функция получает правую часть строки аргумента с указанным размером
Mid Реализована Функция Mid(<Аргумент>,<Индекс начального символа (INT)>,<Количество символов (INT)>):<Результат (STRING)> Функция получает произвольную часть строки аргумента
Pos Реализована Функция Pos(<Подстрока поиска>,<Строка в которой происходит поиск>,<Индекс начального символа (INT)>):<Индекс в строке поиска (INT)> Находит вхождение подстроки в указанную строку поиска, начиная с указанной позиции, если подстрока не найдена, возвращает ноль
PosNoCase Планируется Функция PosNoCase(<Подстрока поиска>,<Строка в которой происходит поиск>,<Индекс начального символа (INT)>):<Индекс в строке поиска (INT)> Находит вхождение подстроки в указанную строку поиска, начиная с указанной позиции, если подстрока не найдена, возвращает ноль. Поиск ведется без учета регистра
RightPos Реализована Функция RightPos(<Подстрока поиска>,<Строка в которой происходит поиск>,<Индекс начального символа (INT)>):<Индекс в строке поиска (INT)> Находит вхождение подстроки в указанную строку поиска, начиная с указанной позиции, если подстрока не найдена, возвращает ноль. Поиск производится справа-налево.
RightPosNoCase Планируется Функция RightPosNoCase(<Подстрока поиска>,<Строка в которой происходит поиск>,<Индекс начального символа (INT)>):<Индекс в строке поиска (INT)> Находит вхождение подстроки в указанную строку поиска, начиная с указанной позиции, если подстрока не найдена, возвращает ноль. Поиск производится справа-налево. Поиск ведется без учета регистра
Replace Реализована Функция Replace(<Строка в которой происходит замена>,<Подстрока поиска>,<Подстрока замены>):<Результат (STRING)> Заменяет все вхождения строки второго аргумента в строке первого аргумента на строку третьего аргумента. Третий аргумент может содержать в себе строку второго аргумента.
ReplaceCharacters Реализована Функция ReplaceCharacters(<Строка в которой происходит замена>,<Заменяемые символы>,<Заменяющие символы>):<Результат (STRING)> Функция производит множественную замену определенных символов на другие и возвращает ее результат.
ReplaceNoCase Планируется Функция ReplaceNoCase(<Строка в которой происходит замена>,<Подстрока поиска>,<Подстрока замены>):<Результат (STRING)> Заменяет все вхождения строки второго аргумента в строке первого аргумента на строку третьего аргумента. Третий аргумент может содержать в себе строку второго аргумента. Поиск ведется без учета регистра
RepeatStr Реализована Функция RepeatStr(<Аргумент>,<Количество повторений (INT)>):<Результат (STRING)> Повторяет строковое представление аргумента указанное количество раз
Reverse Реализована Функция Reverse(<Аргумент>):<Результат (STRING)> Получает строку набранную с конца до начала строкого представления аргумента
StrCount Реализована Функция StrCount(<Подстрока поиска>,<Строка в которой происходит поиск>):<Количество вхождений (INT)> Находит количество вхождений подстроки поиска в строку, представленную вторым аргументом. После нахождения вхождения индекс поиска сдвигается на размер строки поиска.
LinesCount Реализована Функция LinesCount(<Аргумент>):<Количество строк (INT)> Находит количество вхождений знака перевода строки в строковое представление аргумента и увеличивает результат на единицу
GetLine Реализована Функция GetLine(<Аргумент>,<Номер строки (INT)>):<Результат (STRING)> В строковом представлении аргумента, разделенного знаками перевода строки, находит и возвращает подстроку с указанным индексом.
UpperCase Реализована Функция UpperCase(<Аргумент>):<Результат (STRING)> Возвращает строковое представление аргумента, переведенное в верхний регистр
LowerCase Реализована Функция LowerCase(<Аргумент>):<Результат (STRING)> Возвращает строковое представление аргумента, переведенное в нижний регистр
Capitalize Реализована Функция Capitalize(<Аргумент>):<Результат (STRING)> Функция возвращает строковое представление аргумента, переводя первый его символ в верхний регистр.
RemoveNonPrintableChars Реализована Функция RemoveNonPrintableChars(<Аргумент>,<Оставить символы перевода строки (INT)>=0):<Результат (STRING)> Удаляет из текстового представления аргумента непечатные символы (символы с кодом <32), оставляя символы перевода строки при необходимости
Chr Реализована Функция Chr(<Код символа (INT)>,<Тип (INT)>=0):<Символ (STRING)> Возвращает строку, состоящую из одного символа по указанному коду в ANSI или UTF-16 кодировке.
Asc Реализована Функция Asc(<Аргумент>):<Код символа (INT)> Возвращает код первого символа строкового представления аргумента.
ContainsOnlyCharacters Реализована Функция ContainsOnlyCharacters(<Аргумент>,<Набор символов>):<0 или 1 (INT)> Проверяет, содержит ли строковое представление первого аргумента только символы, указанные в строковом представлении второго аргумента.
CompareStrings Реализована Функция CompareStrings(<Аргумент 1>,<Аргумент 2>,<Метод (INT)>=1,<Ошибка>=""):<0, 1 или -1 (INT)> Сравнивает две строки, используя указанный метод, возвращает -1, если первая строка меньше второй, 0, если строки равны и 1 в ином случае.
IsUnicode Реализована Функция IsUnicode(<Аргумент>):<0 или 1 (INT)> Проверяет, является ли строковое представление аргумента строкой UTF-16 или ANSI (см. Строки)
Unicode Реализована Функция Unicode(<Аргумент>):<Результат (STRING)> Безусловно переводит строковое представление аргумента в строку UTF-16
UnicodeToUTF8 Реализована Функция UnicodeToUTF8(<Аргумент>):<Результат (STRING)> Превращает строковое представление аргумента (не обязательно строку в формате UTF-16) в строку ANSI с закодированным текстом в формате UTF-8
UTF8ToUnicode Реализована Функция UTF8ToUnicode(<Аргумент>):<Результат (STRING)> Превращает перекодирует результат из формата UTF-8 в формат UTF-16.
Ansi Реализована Функция Ansi(<Аргумент>):<Результат (STRING)> Безусловно переводит строковое представление аргумента в строку ANSI, используя системную кодовую страницу.
OemToAnsi Реализована Функция OemToAnsi(<Аргумент>):<Результат (STRING)> Производит перекодировку строкового представления аргумента из кодовой страницы OEM в ANSI, используя системную кодовую страницу.
AnsiToOem Реализована Функция AnsiToOem(<Аргумент>):<Результат (STRING)> Производит перекодировку строкового представления аргумента из кодовой страницы ANSI в OEM, используя системную кодовую страницу.
AnsiToUTF8 Реализована Функция AnsiToUTF8(<Аргумент>):<Результат (STRING)> Производит перекодировку строкового представления аргумента из кодовой страницы ANSI в UTF-8, используя системную кодовую страницу.
UTF8ToAnsi Реализована Функция UTF8ToAnsi(<Аргумент>):<Результат (STRING)> Производит перекодировку строкового представления аргумента из UTF-8 в кодовую страницу ANSI, используя системную кодовую страницу.
TranslateFrom Реализована Функция TranslateFrom(<Аргумент>,<Кодовая страница (INT)>,<Удалять BOM (INT)>=1):<Результат (STRING)> Производит перекодировку строкового представления аргумента из кодовой страницы, заданной вторым аргументом в UTF-16, при необходимости удаляет BOM
TranslateTo Реализована Функция TranslateTo(<Аргумент>,<Кодовая страница (INT)>,<Добавить BOM (INT)>=0):<Результат (STRING)> Производит перекодировку строкового представления аргумента из UTF-16 в кодовую страницу, заданную вторым аргументом, при необходимости добавляя BOM
Translate Реализована Функция Translate(<Аргумент>,<Кодовая страница источник (INT)>,<Кодовая страница приемник (INT)>,<Удалять и добавлять BOM (INT)>=0):<Результат (STRING)> Производит перекодировку строкового представления аргумента из кодовой страницы, заданной вторым аргументом в кодовую страницу, заданную третьим аргументом, при необходимости удаляя и добавляя BOM
FormatDate Реализована Функция FormatDate(<Дата>,<Шаблон форматирования>,<Язык форматирования (STRING)>):<Результат (STRING)> Производит перекодировку даты и времени в строковой формат по указанному шаблону, используя указанный язык
FormatPeriod Планируется Функция Производит перекодировку периода между двумя датами в строковой формат по указанному шаблону, используя указанный язык
FormatNumber Реализована Функция FormatNumber(<Число>,<Нули пустой строкой (INT)>=1,<Разделитель тысяч (STRING)>="'",<Точность после точки (INT)>=2):<Результат (STRING)> Производит перекодировку и формирование числа в строковой формат, используя указанные установки
SpellNumber Реализована Функция SpellNumber(<Число>,<Язык кодирования (STRING)>,<Род результата (STRING)>="М"):<Результат (STRING)> Превращает число в его прописное представление, используя указанный язык и грамматический род результата
FormatCurrency Реализована Функция FormatCurrency(<Число>,<Режим (INT)>=0,<Тип валюты (STRING)>="USD",<Язык форматирования (STRING)>):<Результат (STRING)> Создает прописное представление денежной номинации по указанным правилам, для указанной валюты, используя указанный язык
TearStr Реализована Функция TearStr(<Строка>,<Подстрока-разделитель>="@"):<Результат (STRING)> Производит деление исходного строкового представления на две строки, разделенные вторым аргументом, возвращая в результате первую подстроку, и обновляя значение переменной первого аргумента второй строкой, если первый аргумент был переменной.
GetSubStr Реализована Функция GetSubStr(<Строка>,<Индекс (INT)>,<Подстрока-разделитель>="@"):<Результат (STRING)> Получает подстроку исходной строки, начиная с индекса символа, указанного во втором аргументе до следуюшего вхождения строки-разделителя в исходную строку. Индекс обновляется до позиции, непосредственно за найденной строкой-разделителем.
AppendStringToBufferedString Реализована Функция AppendStringToBufferedString(<Строка>,<Добавляемая строка>,<Шаг увеличения буфера (INT)>) Добавляет к строке в указанной в переменной, следующей первым аргументом, строку, заданную вторым аргументом. Используется для оптимизации скорости выполнения для длинных строк с большим количеством приращений.
FileToString Реализована Функция FileToString(<Имя файла>,<Кодовая страница (INT)>=0):<Результат (STRING)> Загружает указанный файл в строку, используя указанную кодовую страницу. Результирующая строка будет перекодирована в UTF-16, если кодовая страница равна нулю и присутвует BOM или больше нуля
StringToFile Реализована Функция StringToFile(<Строка>,<Имя файла>,<Кодовая страница (INT)>=0,<Добавить BOM (INT)>=0) Сохраняет строку в файл, при необходимости перекодируя ее в нужную кодировку и добавляя BOM. Вызывает исключение при ошибке.
AppendStringToFile Реализована Функция AppendStringToFile(<Строка>,<Имя файла>) Дополняет содержимое файла указанной строкой. Строка добавляется без перекодировки, если нужна определенная кодовая страница, строку необходимо предварительно подготовить. Функция вызывает исключение при ошибке.
EncodeXMLString Реализована Функция EncodeXMLString(<Строка>):<Результат (STRING)> Перекодирует знаки, запрещенные в теле файлов в XML формате, в разрешенную форму (к примеру "&" превращается в &amp;)
DecodeXMLString, DecodeHTMLString Реализована Функция DecodeXMLString(<Строка>):<Результат (STRING)> Перекодирует текст в HTML/XML нотации в обычный текст, т.е. последовательности типа &amp; или &#9829; в соответствующие знаки
EncodeHTMLString Планируется Функция EncodeXMLString(<Строка>):<Результат (STRING)> Перекодирует знаки, запрещенные в теле файлов в HTML формате, в разрешенную форму (к примеру "&" превращается в &amp;). В отличии от XML версии, производится перекодировка большего количества знаков, которые разрешены в XML, однако, запрещены в HTML.
CreateGUID Реализована Функция CreateGUID():<Результат (STRING)> Формирует новый GUID идентификатор системным медотом
ReformatXML Частичная реализация Функция ReformatXML(<Строка или текст (STRING,TEXT)>,<Режимы (INT)>=3):<Результат (STRING)> Приводит текст в XML нотации к каноническому простому виду с тем, чтобы его можно было разобрать обычными текстовыми функциями. Позволяет настроить глубину упрощения текста
LoadJSONFromString Реализована Функция LoadJSONFromString(<Строка (STRING)>,<Тип возвращаемого объекта (INT)>=0):<Результат (TREE,LIST)> Функция загружает часть текста или весь текст в формате JSON и возвращает его представление в виде объекта дерева или списка.
SaveJSONToString Реализована Функция SaveJSONToString(<Объект дерева, ветки или списка (STRING)>):<Результат (STRING)> Функция превращает объект дерева, ветки или списка в текст JSON.
EncodeString Частичная реализация Функция EncodeString(<Строка или буфер (STRING,BUFFER)>,<Формат кодирования (STRING)>="INTERNAL",<Параметры кодирования (STRING)>):<Результат (STRING)> Производит кодирование строки в указанный формат (к примеру, "Base64" или "UUE"). Могут кодироваться как ANSI, так и Unicode строки, информация также может получаться из буфера.
DecodeString Частичная реализация Функция DecodeString(<Строка (STRING)>,<Формат декодирования (STRING)>="INTERNAL",<Результат в формате UTF-16 (INT)>=0,<Параметры декодирования (STRING)>):<Результат (STRING)> Производит декодирование строки из указанного формата (к примеру, "Base64" или "UUE"). Могут декодироваться как ANSI, так и Unicode строки.

Функции строк-массивов значений

Идентификатор Статус Тип Визуальная Параметры Описание
AssertStringValues Реализована Функция AssertStringValues(<Аргумент 1>,<Аргумент 2>,<Строка-разделитель>,<Тип операции (INT)>,<Разделитель префикса>="") Производит проверку двух строк-массивов значений, имеющих префиксы, если необходимо, указанным методом. Если проверка неудачна, создает исключение.
JoinStringValues Реализована Функция JoinStringValues(<Аргумент 1>,<Аргумент 2>,<Строка-разделитель>,<Тип операции (STRING)>="OR",<Разделитель префикса>=""):<Результат (STRING)> Выполняет указанную логическую операцию над двумя строками-массивами значений, имеющих префиксы, если необходимо. Возвращает результирующую строку-массив значений.
GetStringValuesByPrefix Реализована Функция GetStringValuesByPrefix(<Аргумент>,<Строка-разделитель (STRING)>,<Разделитель префикса (STRING)>,<Значение префикса>):<Результат (STRING)> Возвращает строку-массив значений, состоящую только из значений строки-массива значений аргумента с указанным префиксом
GroupStringValues Реализована Функция GroupStringValues(<Аргумент>,<Строка-разделитель>,<Разделитель префикса>=""):<Результат (STRING)> Возвращает строку-массив значений, которая содержит только уникальные значения исходной строки-массива значений.
SortStringValues Реализована Функция SortStringValues(<Аргумент>,<Строка-разделитель>,<Направление (INT)>=0,<Разделитель префикса>=""):<Результат (STRING)> Возвращает строку-массив значений, полученную путем регистро-зависимой сортировки в указанном направлении значений исходной строки-массива значений.
GetPrefixesFromStringValues Реализована Функция GetPrefixesFromStringValues(<Аргумент>,<Строка-разделитель>,<Разделитель префикса>):<Результат (STRING)> Возвращает строку-массив значений, состоящую только из префиксов исходной строки-массива значений.
CopyStringValuesTo Реализована Функция CopyStringValuesTo(<Аргумент>,<Строка-разделитель>,<Разделитель префикса>,<Объект для заполнения (LIST,TAB)>) Функция производит копирование массива значений из строки-массива в список или таблицу.

Функции для работы с регулярными выражениями (regular expressions, RegExp)

Функции этой группы позволяют использовать регулярные выражения для поиска, замены или разделения строк. Функции всегда работают с UTF-16 строками (если строка имеет формат ANSI, она будет превращена в UTF-16 перед работой, если строка имеет формат UTF-8, ее необходимо превратить в UTF-16 с помощью функции UTF8ToUnicode). Следует также понимать, что разбор длинной строки с помощью функций TearStr или подобных будет всегда быстрее, чем применение регулярных выражений (так как регулярные выражения подразумевают перебор, а не прямой поиск). Также важно учесть, что переводы строки в строке поиска должны состоять из последовательности (Chr(13)+Chr(10), т.е. _NEWLINE), иначе специальные символы ^ и $ не будут работать корректно.

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

Тип Последовательность Описание
Спец. символы \n Символ перевода строки, Chr(10).
Спец. символы \r Символ перевода каретки, Chr(13).
Спец. символы \t Символ табуляции, Chr(8).
Спец. символы \v Символ Chr(11).
Спец. символы \h Любой из знаков пробела (любой из символов юникода со следующими кодами: 32, 9, 160, 5760, 6158, 8192-8202, 8239, 8287, 12288).
Спец. символы \H Любой символ, кроме знаков пробела (любой из символов, кроме символов юникода со следующими кодами: 32, 9, 160, 5760, 6158, 8192-8202, 8239, 8287, 12288).
Спец. символы \f Символ разделения страниц, Chr(12).
Спец. символы [\b] Символ забоя, Chr(8) (используется только внутри набора символов).
Спец. символы \0 Символ Chr(0).
Спец. символы \R Набор символов перевода строки, соответствует любой из следующих комбинаций: Chr(10), Chr(11), Chr(12), Chr(13), Chr(133), Chr(13)+Chr(10).
Спец. символы \N Обратно \R. соответствует любому символу, кроме последовательностей из следующих комбинаций: Chr(10), Chr(11), Chr(12), Chr(13), Chr(133), Chr(13)+Chr(10).
Кодирование символов \cX X может принимать значения от A до Z. Соответствует символу с кодом, равным позиции буквы латинского алфавита, заданной после \c. То есть, \cA будет соответствовать символу с кодом 1, тогда как \cZ, символу с кодом 26.
Кодирование символов \x?? Соответствует символу с кодом, заданным шестнадцатеричным числом ??. К примеру, \x20 (пробел).
Кодирование символов \u???? Соответствует символу с кодом, заданным шестнадцатеричным числом ????. К примеру, \x042F (буква Я). Нужно заметить, что коды символов здесь не могут превышать 65535.
Кодирование символов \u{N}, \x{N} Соответствует символу с кодом, заданным шестнадцатеричным числом ??????. К примеру, \u{1F642} (символ эмоции 🙂). N может находиться в диапазоне 0..10FFFF.
Кодирование символов \? Символ экранирования \ может использоваться для вставки символов, которые иначе трактовались бы как особые последовательности или спец. символы. К примеру \\ (задает сам символ \) или \[ (задает сам символ [). ? может быть любым символом из набора: " ".."@", "[", "\", "]", "^", "_", "`", "{" и далее до конца таблицы юникода.
Кодирование символов \Q ... \E Экранирование группы символов "..." начинается с помощью последовательности \Q и заканчивается последовательностью \E, все символы внутри не будут трактоваться как особые последовательности или спец. символы. К примеру \Q+*\E (задает два символа +*).
Наборы символов [...] Конструкция задает набор символов, символ сравниваемого текста будет соответствовать, если он будет равен любому символу из списка, представленного данным набором. Внутри конструкции можно использовать не только символы, но и последовательности символов (A-Z), конструкции экранирования \Q ... \E и \?, конструкции кодирования символов (\x?? и пр.), спец. символы (\n и пр.), спец. наборы (\d или \D) и наборы юникода (\p{Decimal_Digit_Number} и пр.).
Наборы символов [^...] Конструкция задает набор символов, символ сравниваемого текста будет соответствовать, если он не будет равен ни одному символу из списка, представленного данным набором. Внутри конструкции можно использовать не только символы, но и последовательности символов (A-Z), конструкции экранирования \Q ... \E и \?, конструкции кодирования символов (\x?? и пр.), спец. символы (\n и пр.), спец. наборы (\d или \D) и наборы юникода (\p{Decimal_Digit_Number} и пр.).
Наборы символов . Специальный символ соответствует любому символу текста, кроме набора [\r\n\u2028\u2029].
Наборы символов \C Конструкция соответствует коду символа, полученному из двух байтов текста -- data point (каждый UTF-16 символ может быть представлен как двумя, так и четырьмя знаками см. Строки). Не рекомендуется к использованию.
Наборы символов \d Конструкция задает набор числовых символов, соответствующий набору [0-9].
Наборы символов \D Конструкция задает набор нечисловых символов, соответствующий набору [^0-9].
Наборы символов \w Конструкция задает набор числовых и литерных символов, соответствующий набору [A-Za-z0-9_].
Наборы символов \W Конструкция задает набор не числовых и не литерных символов, соответствующий набору [^A-Za-z0-9_].
Наборы символов \s Конструкция задает набор символов пробела и невидимых символов, соответствующий набору [\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].
Наборы символов \S Конструкция задает набор символов, не соответствующих символам пробела и невидимым символам. Соответствует набору [^\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff].
Наборы символов \p? Конструкция задает набор символов, соответствующих одной из групп таблицы юникода. ? может соответствовать символам: L -- буквенные символы (letter), M -- символы разметки (mark), N -- числовые символы (number), P -- символы пунктуации (punctuation), S -- рисунки и прочие символы (symbol), Z -- символы разделителей (separator), C -- остальные коды (other). Подробнее см. сл. таблицу.
Наборы символов \P? Конструкция задает набор символов, не соответствующих одной из групп таблицы юникода, и является обратной по отношению к \p?.
Наборы символов \p{Group} Конструкция задает набор символов, соответствующих разнообразным группам таблицы юникода. Group чувствительна к регистру и может соответствовать комбинациям: L, Letter, Ll, Lowercase_Letter, Lu, Uppercase_Letter, Lt, Titlecase_Letter, L&, Cased_Letter, Lm, Modifier_Letter, Lo, Other_Letter, M, Mark, Mn, Non_Spacing_Mark, Mc, Spacing_Combining_Mark, Me, Enclosing_Mark, Z, Separator, Zs, Space_Separator, Zl, Line_Separator, Zp, Paragraph_Separator, S, Symbol, Sm, Math_Symbol, Sc, Currency_Symbol, Sk, Modifier_Symbol, So, Other_Symbol, N, Number, Nd, Decimal_Digit_Number, Nl, Letter_Number, No, Other_Number, P, Punctuation, Pd, Dash_Punctuation, Ps, Open_Punctuation, Pe, Close_Punctuation, Pi, Initial_Punctuation, Pf, Final_Punctuation, Pc, Connector_Punctuation, Po, Other_Punctuation, C, Other, Cc, Control, Cf, Format, Co, Private_Use, Cs, Surrogate, Cn, Unassigned, InBasic_Latin, InLatin-1_Supplement, InLatin_Extended-A, InLatin_Extended-B, InIPA_Extensions, InSpacing_Modifier_Letters, InCombining_Diacritical_Marks, InGreek_and_Coptic, InCyrillic, InCyrillic_Supplementary, InArmenian, InHebrew, InArabic, InSyriac, InThaana, InDevanagari, InBengali, InGurmukhi, InGujarati, InOriya, InTamil, InTelugu, InKannada, InMalayalam, InSinhala, InThai, InLao, InTibetan, InMyanmar, InGeorgian, InHangul_Jamo, InEthiopic, InCherokee, InUnified_Canadian_Aboriginal_Syllabics, InOgham, InRunic, InTagalog, InHanunoo, InBuhid, InTagbanwa, InKhmer, InMongolian, InLimbu, InTai_Le, InKhmer_Symbols, InPhonetic_Extensions, InLatin_Extended_Additional, InGreek_Extended, InGeneral_Punctuation, InSuperscripts_and_Subscripts, InCurrency_Symbols, InCombining_Diacritical_Marks_for_Symbols, InLetterlike_Symbols, InNumber_Forms, InArrows, InMathematical_Operators, InMiscellaneous_Technical, InControl_Pictures, InOptical_Character_Recognition, InEnclosed_Alphanumerics, InBox_Drawing, InBlock_Elements, InGeometric_Shapes, InMiscellaneous_Symbols, InDingbats,InMiscellaneous_Mathematical_Symbols-A, InSupplemental_Arrows-A,InBraille_Patterns, InSupplemental_Arrows-B, InMiscellaneous_Mathematical_Symbols-B, InSupplemental_Mathematical_Operators, InMiscellaneous_Symbols_and_Arrows, InCJK_Radicals_Supplement, InKangxi_Radicals, InIdeographic_Description_Characters, InCJK_Symbols_and_Punctuation, InHiragana, InKatakana, InBopomofo, InHangul_Compatibility_Jamo, InKanbun, InBopomofo_Extended, InKatakana_Phonetic_Extensions, InEnclosed_CJK_Letters_and_Months, InCJK_Compatibility, InCJK_Unified_Ideographs_Extension_A, InYijing_Hexagram_Symbols, InCJK_Unified_Ideographs, InYi_Syllables, InYi_Radicals, InHangul_Syllables, InHigh_Surrogates, InHigh_Private_Use_Surrogates, InLow_Surrogates, InPrivate_Use_Area, InCJK_Compatibility_Ideographs, InAlphabetic_Presentation_Forms, InArabic_Presentation_Forms-A, InVariation_Selectors, InCombining_Half_Marks, InCJK_Compatibility_Forms, InSmall_Form_Variants, InArabic_Presentation_Forms-B, InHalfwidth_and_Fullwidth_Forms, InSpecials. Для дополнительной информации, см. таблицу простых наборов, описание категорий и диапазонов или полную таблицу выделенных символов юникода.
Наборы символов \P{Group} Конструкция задает набор символов, не соответствующих одной из групп таблицы юникода, заданных словом Group, и является обратной по отношению к \p{Group}.
Конструкции проверки позиции ^ Конструкция соответствует положению в тексте, перед началом всего текста или любой строки (строки разделяются двумя символами \x0D\x0A). Поведение можно модифицировать (не включать начало каждой строки с помощью аргумента Флаги функций для работы с регулярными выражениями).
Конструкции проверки позиции \A Конструкция соответствует положению в тексте, перед началом всего текста (в отличие ^ не модифицируется).
Конструкции проверки позиции $ Конструкция соответствует положению в тексте, после окончания всего текста или после последнего символа любой строки (строки разделяются двумя символами \x0D\x0A). Поведение можно модифицировать (не включать конец каждой строки с помощью аргумента Флаги функций для работы с регулярными выражениями).
Конструкции проверки позиции \Z Конструкция соответствует положению в тексте, после окончания всего текста, но перед последним символов перевод строки (\x0D\x0A), если таковой присутствует.
Конструкции проверки позиции \z Конструкция соответствует положению в тексте, после окончания всего текста.
Конструкции проверки позиции \b Конструкция "граница слов" соответствует положению в тексте, где предыдущий и последующий символы принадлежат разным группам из наборов [A-Za-z0-9_] и [^A-Za-z0-9_].
Конструкции проверки позиции \B Конструкция "не граница слов" соответствует положению в тексте, где предыдущий и последующий символы принадлежат одинаковым группам из наборов [A-Za-z0-9_] и [^A-Za-z0-9_].
Конструкция перечисления ...|...|... ... Конструкция перечисления соответствует месту в тексте, которому соответствует любое из выражений внутри ее. Конструкция может работать как для всего регулярного выражения, так и для конкретной группы. Каждое выражение конструкции может быть произвольным регулярным выражением. Примеры: red|green, \b(red|green|blue)\b.
Группы проверки (?=...) Положительная группа проверки вперед соответствует положению в тексте после которого будет следовать кусок текста, соответствующий регулярному выражению в группе. Проверка не передвигает позицию сравнения, она остается на прежнем месте. Пример: \S+\s+(?=XVI?)[IVX]+ найдет "Людовик XV" в строке "Людовик XV — король Франции c 1 сентября 1715 года".
Группы проверки (?!...) Отрицательная группа проверки вперед соответствует положению в тексте после которого не будет следовать кусок текста, соответствующий регулярному выражению в группе. Проверка не передвигает позицию сравнения, она остается на прежнем месте. Пример: \S+\s+(?!XVI)[VXI]+ найдет "Людовик XV" в строке "Людовик XV — король Франции c 1 сентября 1715 года", однако, не найден ничего в строке "Людовик XVI — король Франции c 4 сентября 1791 года".
Группы проверки (?<=...) Положительная группа проверки назад соответствует положению в тексте перед которым должен находиться кусок текста, соответствующий регулярному выражению в группе. Проверка не передвигает позицию сравнения, она остается на прежнем месте. Пример: \S+(?<=Людовик)\s+[IVX]+ найдет "Людовик XV" в строке "Людовик XV — король Франции c 1 сентября 1715 года".
Группы проверки (?<=...) Отрицательная группа проверки назад соответствует положению в тексте перед которым не должен находиться кусок текста, соответствующий регулярному выражению в группе. Проверка не передвигает позицию сравнения, она остается на прежнем месте. Пример: \S+(?<!Луи)\s+[IVX]+ найдет "Людовик XV" в строке "Людовик XV — король Франции c 1 сентября 1715 года".
Группы выражений (...) Группа, содержащая произвольное регулярное выражение. Используется для удобства квантификации с символами типа "*", "+" и пр., для конструкций перечисления, а также возвращает последний найденный результат в соответствующих режимах функции MatchRE. Внутри групп разрешено использование других групп. Каждая группа имеет свой индекс, нумерация начинается с 1 и задается в последовательности левых открывающихся скобок (это имеет значение только для вложенных групп).
Группы выражений (<Group>...) Именованная группа, отличается от (...) только тем, что имеет кроме номера еще и имя. При обращении к результатам групп (к примеру с помощью \g{?}) можно указывать, как номер группы, так и наименование. При возврате результатов групп в функции MatchRE для именованных групп будет использовано имя, а для безымянных -- индекс.
Группы выражений (?:...) Группа без результата, отличается от (...) только тем, что не будет присутствовать в результатах функции MatchRE и также не будет иметь индекса группы, т.е., к ней нельзя будет обратиться к помощью конструкций \g{?} или подобных.
Группа комментария (?#...) Текст внутри данной группы не будет разбираться и участвовать в поиске результата.
Ссылки на группы \N, \gN, \g{N} Число N задает индекс обычной или именованной группы, текущий из результатов которой будет использован для поиска для текущей позиции сравнения. Фактически является ссылкой на результат группы. Нумерация групп начинается с 1 и задается в последовательности левых открывающихся скобок (это имеет значение только для вложенных групп).
Ссылки на группы \k<Group>, \g{Group} Group задает имя именованной группы, текущий из результатов которой будет использован для поиска для текущей позиции сравнения. Фактически является ссылкой на результат группы по ее имени.
Ссылки на группы \g{-N} Число N задает индекс обычной или именованной группы по отношению к последней заданной группе на данном этапе разбора шаблона, текущий из результатов которой будет использован для поиска для текущей позиции сравнения. Фактически является ссылкой на результат группы относительно к последней заданной. Нумерация групп начинается с 1 и задается в последовательности левых открывающихся скобок (это имеет значение только для вложенных групп).
Ссылки на группы \g<N>, \g<Group>, \g<-N> Текст шаблона группы, заданной индексом, именем или индексом отношения будет использован, начиная с текущей позиции шаблона. Фактически является ссылкой на шаблон группы, для упрощения общего шаблона, если в нем есть несколько одинаковых по описанию групп. Нумерация групп начинается с 1 и задается в последовательности левых открывающихся скобок (это имеет значение только для вложенных групп). Пример: (\S+) и (\g<1>) найдет "мам и пап" в строке "мам и пап", значение группы 1 будет равно "мам", а значение группы 2 будет равно "пап". Ссылка создает копию группы без результата, поэтому в примере, она добавлена в еще одну группу с результатом, чтобы показать разницу между \g{N} и \g<N>.
Условия в шаблоне (?(N)...|...) Число N задает индекс обычной или именованной группы, если группа вернула какое-либо значение (группа могла не вернуть значение, если она не была выполнена из-за предыдущего условия, либо не задавала квантификацию с количеством ноль), для дальнейшего поиска будет использован первый из шаблонов внутри конструкции, иначе -- второй (после знака |). Пример: (а)?(?(1)ма|па) найдет "ама" и два раза "па" в строке "мама и папа".
Условия в шаблоне (?(?=...)...|...), (?(?!...)...|...), (?(?<=...)...|...), (?(?<!...)...|...) Внутри условия задается одна из четырех групп проверки (см. выше), при поиске результата, если группа поиска нашла значение, для дальнейшего поиска будет использован первый из шаблонов внутри конструкции, иначе -- второй (после знака |). Пример: (?(?<=а)м|п) найдет "м" с позицией 3 и "п" с позицией 8 в строке "мама и папа".
Квантификаторы ? (жадная конструкция, greedy) Проверяет текст с текущей позиции поиска на совпадение с предыдущим символом (если указан после символа), группой (если указан после группы) или конструкции (перечисления, проверки позиции и т.д.), если указан после конструкции. Если совпадение не найдено, не передвигает позицию поиска, иначе передвигает ее. Иными словами, ищет 0 или 1 совпадений с предыдущим шаблоном.
Квантификаторы * (жадная конструкция, greedy) Проверяет текст с текущей позиции поиска на совпадение с предыдущим символом (если указан после символа), группой (если указан после группы) или конструкцией (перечисления, проверки позиции и т.д.), если указан после конструкции. Если совпадение не найдено, не передвигает позицию поиска, иначе пытается найти как можно больше последовательных совпадений, и передвигает позицию поиска за последним найденным. Иными словами, ищет 0 или более совпадений с предыдущим шаблоном.
Квантификаторы + (жадная конструкция, greedy) Проверяет текст с текущей позиции поиска на совпадение с предыдущим символом (если указан после символа), группой (если указан после группы) или конструкцией (перечисления, проверки позиции и т.д.), если указан после конструкции. Если совпадение не найдено, поиск для данной позиции будет завершен неудачей, иначе пытается найти как можно больше последовательных совпадений, и передвигает позицию поиска за последним найденным. Иными словами, ищет 1 или более совпадений с предыдущим шаблоном.
Квантификаторы {N}, {N,}, {N,M} (жадные конструкции, greedy) Находит максимально возможное количество последовательных совпадений текста в диапазоне от N до M с текущей позиции поиска с предыдущим символом (если указан после символа), группой (если указан после группы) или конструкцией (перечисления, проверки позиции и т.д.), если указан после конструкции. Если совпадения не найдены, поиск для данной позиции будет завершен неудачей, позицию поиска передвигается за последним найденным. Для конструкции {N} ищется точное N совпадений, для {N,} -- максимальное количество, но не меньше N, для {N,M} -- максимальное количество из диапазона [N..M]. Иными словами, ищет от N до M совпадений с предыдущим шаблоном.
Квантификаторы ??, *?, +?, {N}?, {N,}?, {N,M}? (ленивые конструкции, lazy) В отличие от жадных квантификаторов (см. выше), данные находят минимальное возможное количество совпадений.
Квантификаторы ?+, *+, ++, {N}+, {N,}+, {N,M}+ (собственнические конструкции, possessive) В отличие от жадных квантификаторов (см. выше), данные находят максимально возможное количество совпадений, и не отдают результата, если для него требуется меньшее, чем максимальное найденное количество совпадений. Использование таких квантификаторов совместно с жадными или ленивыми в объемном тексте может привести с многократному замедлению поиска (до многих порядков), так как системе придется перебирать гораздо большее количество шагов, поэтому использовать их нужно с осторожностью (к примеру .+(.++)ы+ для сравнительно небольшого текста будет являться причиной миллионов итераций).
Идентификатор Статус Тип Визуальная Параметры Описание
MatchRE, PosRE Реализована Функция MatchRE(<Выражение (STRING)>,<Строка, в которой происходит поиск (STRING)>,<Позиция начала поиска (INT)>=0,<Длина найденного (INT)>),<Режим поиска (INT)>=0,<Флаги поиска (INT)>=0):<Позиция, список или таблица (INT,LIST,TAB)> Производит проверку шаблона регулярных выражений, заданного первым аргументом в тексте, заданным вторым аргументом. В зависимости от режима поиска может возвратить найденную позицию или ноль, список найденных значений (и значений групп поиска), либо таблицу позиций найденных значений (и значений групп поиска).
ReplaceRE Реализована Функция ReplaceRE(<Строка, в которой происходит поиск (STRING)>,<Выражение (STRING)>,<Шаблон для замены (STRING)>,<Позиция начала поиска (INT)>=0,<Максимальное количество замен (INT)>=0,<Флаги поиска (INT)>=0):<Текст результата (STRING)> Производит проверку шаблона регулярных выражений, заданного вторым аргументом в тексте, заданном первым аргументом. Возвращает текст, с заменой найденных в нем значений на текст или шаблон, заданный третьим аргументом.
TearStrRE Реализована Функция TearStrRE(<Строка, в которой происходит поиск (STRING)>,<Выражение (STRING)>,<Максимальное количество результатов для деления (INT)>=0,<Флаги поиска (INT)>=0):<Список результатов деления (LIST)> Производит проверку шаблона регулярных выражений, заданного вторым аргументом в тексте, заданном первым аргументом. Возвращает список отрывков текста, находившихся между найденными выражениями. Останавливает процесс деления текста при достижении максимального количества делений, последний отрезок текста (для которого, возможно, проверка не была закончена), также добавляется в результирующий список.