reckfellENGINE

RegEx

Компиляция PCRE2-шаблона, поиск и замена в тексте.

На этой странице
class RegExReckfellSharpНаследует RefCounted

Сначала Compile и проверка Error.Ok, затем Search/SearchAll/Sub. Для многократного поиска переиспользуйте успешно скомпилированный объект. CreateFromString удобнее, но всё равно требует проверки IsValid.

Шаблон проходит два уровня: строковый литерал C# и синтаксис PCRE2. Например, @"\d+" и "\\d+" передают одинаковый шаблон. Не считайте результат онлайн-проверки на другом regex-движке гарантией эквивалентности.

Пример находит первую последовательность ASCII-цифр и получает её по имени группы. Он корректно извлекает текст после emoji и кириллицы, не подставляя нативный индекс в C# Substring.

C#
using Reckfell;

public static class RegExTextExample
{
    public static bool TryFindNumber(string text, out string number)
    {
        number = "";
        using var expression = new RegEx();
        if (expression.Compile(@"(?<number>[0-9]+)") != Error.Ok)
            return false;
        using var match = expression.Search(text);
        if (match is null)
            return false;
        number = match.GetString("number");
        return true;
    }
}

Позиции RegEx измеряются в нативных 32-битных единицах строки. Для корректного Unicode это кодовые точки; C# использует UTF-16, а видимые графемы могут состоять из нескольких точек. Эти индексы нельзя смешивать напрямую. API не предоставляет параметр таймаута поиска; успешная компиляция не обещает ограниченное время на любом входе.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

RegExКонструктор
# RegEx
C#
public RegEx();

Создаёт объект без скомпилированного шаблона. До Search, SearchAll, Sub и чтения метаданных групп вызовите Compile и проверьте Error.Ok/IsValid.

Методы12

Clearvoid
# Clear
C#
public void Clear();

Освобождает скомпилированный код и делает IsValid ложным. Строка GetPattern остаётся прежней: это не полный сброс к состоянию нового объекта. Ранее полученный RegExMatch сохраняет свои данные.

Compile2 перегрузки
# Compile · 1/2
C#
public Error Compile(string pattern);

Компилирует PCRE2-шаблон и заменяет текущий. Старый код удаляется до попытки: при отказе прежний шаблон больше не работает, а GetPattern хранит новую неудачную строку. Перегрузка без showError использует true.

Параметры
ИмяТипПо умолчанию
patternstring—
pattern

PCRE2-шаблон после обработки строкового литерала C#. Например, @"\d+" и "\\d+" передают один шаблон. Синтаксис .NET Regex не считается автоматически эквивалентным.

Возвращает Error

Error.Ok при успехе, Error.Failed при отказе компиляции.

# Compile · 2/2
C#
public Error Compile(string pattern, bool showError = true);

Компилирует PCRE2-шаблон и заменяет текущий. Старый код удаляется до попытки: при отказе прежний шаблон больше не работает, а GetPattern хранит новую неудачную строку. Перегрузка без showError использует true.

Параметры
ИмяТипПо умолчанию
patternstring—
showErrorbooltrue
pattern

PCRE2-шаблон после обработки строкового литерала C#. Например, @"\d+" и "\\d+" передают один шаблон. Синтаксис .NET Regex не считается автоматически эквивалентным.

showError

Выводить диагностику ошибки компиляции. false подавляет сообщение, но не делает шаблон валидным и не меняет код Error.

Возвращает Error

Error.Ok при успехе, Error.Failed при отказе компиляции.

CreateFromString2 перегрузки
# CreateFromString · 1/2
C#
public static RegEx CreateFromString(string pattern);

Создаёт объект и вызывает Compile. Даже при неудачной компиляции возвращает объект RegEx: проверяйте IsValid, а не только отсутствие null. Если нужен отдельный Error, используйте Compile экземпляра.

Параметры
ИмяТипПо умолчанию
patternstring—
pattern

PCRE2-шаблон после обработки строкового литерала C#. Например, @"\d+" и "\\d+" передают один шаблон. Синтаксис .NET Regex не считается автоматически эквивалентным.

Возвращает RegEx

Новый RegEx; на невалидном шаблоне объект может быть невалиден, оставаясь ненулевой ссылкой.

# CreateFromString · 2/2
C#
public static RegEx CreateFromString(string pattern, bool showError = true);

Создаёт объект и вызывает Compile. Даже при неудачной компиляции возвращает объект RegEx: проверяйте IsValid, а не только отсутствие null. Если нужен отдельный Error, используйте Compile экземпляра.

Параметры
ИмяТипПо умолчанию
patternstring—
showErrorbooltrue
pattern

PCRE2-шаблон после обработки строкового литерала C#. Например, @"\d+" и "\\d+" передают один шаблон. Синтаксис .NET Regex не считается автоматически эквивалентным.

showError

Выводить диагностику ошибки компиляции. false подавляет сообщение, но не делает шаблон валидным и не меняет код Error.

Возвращает RegEx

Новый RegEx; на невалидном шаблоне объект может быть невалиден, оставаясь ненулевой ссылкой.

GetGroupCountint
# GetGroupCount
C#
public int GetGroupCount();

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

Возвращает int

Количество групп без группы 0; сначала проверяйте IsValid.

GetNamesstring[]
# GetNames
C#
public string[] GetNames();

Возвращает имена захватывающих групп шаблона. Позиция имени в массиве не является номером группы или обещанным порядком скобок. Для конкретного совпадения используйте RegExMatch.Names.

Возвращает string[]

Массив string[] имён, а не словарь номеров групп.

GetPatternstring
# GetPattern
C#
public string GetPattern();

Возвращает последний переданный Compile текст, включая неудачную попытку. Clear не очищает эту строку; её наличие не доказывает IsValid.

Возвращает string

Сохранённый текст шаблона; он может не иметь работающего скомпилированного кода.

IsValidbool
# IsValid
C#
public bool IsValid();

Проверяет наличие скомпилированного кода. true не означает, что шаблон совпадёт с конкретным текстом, и не задаёт предел времени поиска.

Возвращает bool

true при наличии скомпилированного кода; false у нового/очищенного объекта или после неудачной компиляции.

SearchRegExMatch
# Search
C#
public RegExMatch Search(string subject, int offset = 0, int end = -1);

Ищет первое совпадение в заданных границах исходного текста. offset не переносит начало строки для якоря ^; предыдущий контекст остаётся доступен проверкам границ. Позиции результата относятся к исходному subject и измеряются в нативных 32-битных единицах, не индексах UTF-16 C#.

Параметры
ИмяТипПо умолчанию
subjectstring—
offsetint0
endint-1
subject

Исходный текст для поиска или замены. Нативные индексы кодовых точек для корректного Unicode могут отличаться от C# string.Length/Substring после символов вне BMP.

offset

Начальная позиция с 0 в нативных 32-битных единицах; должна быть >= 0. Не байтовый адрес и не индекс UTF-16.

end

Исключающая правая граница, не длина. Отрицательное значение, включая -1 по умолчанию, означает до конца; граница за концом не расширяет subject. Единицы те же, что у offset.

Возвращает RegExMatch

RegExMatch либо null. null может означать отсутствие совпадения или отказ поиска; сигнатура SDK не показывает эту nullable-возможность.

SearchAllReckfell.Collections.Array<RegExMatch>
# SearchAll
C#
public Reckfell.Collections.Array<RegExMatch> SearchAll(string subject, int offset = 0, int end = -1);

Возвращает непересекающиеся совпадения с позициями в исходном subject. После совпадения нулевой длины реализация продвигает начало следующего поиска на одну нативную единицу. Это не массив строк: каждый элемент — RegExMatch.

Параметры
ИмяТипПо умолчанию
subjectstring—
offsetint0
endint-1
subject

Исходный текст для поиска или замены. Нативные индексы кодовых точек для корректного Unicode могут отличаться от C# string.Length/Substring после символов вне BMP.

offset

Начальная позиция с 0 в нативных 32-битных единицах; должна быть >= 0. Не байтовый адрес и не индекс UTF-16.

end

Исключающая правая граница, не длина. Отрицательное значение, включая -1 по умолчанию, означает до конца; граница за концом не расширяет subject. Единицы те же, что у offset.

Возвращает Reckfell.Collections.Array<RegExMatch>

Типизированный Array<RegExMatch>; без совпадений массив пуст.

Substring
# Sub
C#
public string Sub(string subject, string replacement, bool all = false, int offset = 0, int end = -1);

Заменяет первое или все совпадения. replacement разбирается как шаблон замены с ссылками $1/$name, а не как произвольный буквальный текст. Границы относятся к исходному subject; непоисковые префикс и суффикс сохраняются. Нужен валидный скомпилированный шаблон.

Параметры
ИмяТипПо умолчанию
subjectstring—
replacementstring—
allboolfalse
offsetint0
endint-1
subject

Исходный текст для поиска или замены. Нативные индексы кодовых точек для корректного Unicode могут отличаться от C# string.Length/Substring после символов вне BMP.

replacement

Шаблон подстановки; $1 и $name ссылаются на захваченные группы. Буквальный пользовательский текст может требовать отдельного экранирования для синтаксиса замены.

all

false — заменить первое совпадение; true — все подходящие совпадения в заданных границах.

offset

Начальная позиция с 0 в нативных 32-битных единицах; должна быть >= 0. Не байтовый адрес и не индекс UTF-16.

end

Исключающая правая граница, не длина. Отрицательное значение, включая -1 по умолчанию, означает до конца; граница за концом не расширяет subject. Единицы те же, что у offset.

Возвращает string

Результирующий полный текст при успешной замене. Ошибки PCRE2 могут дать пустой результат и диагностику; это не отдельный Error-результат.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.