Difference between revisions of "MatchRE"
m (1 revision imported) |
1>Admin |
||
Line 15: | Line 15: | ||
== Синтаксис == | == Синтаксис == | ||
<code> | <code> | ||
− | '''MatchRE'''(''<Выражение (STRING)>'',''<Строка, в которой происходит поиск (STRING)>''{{Optional|,''<Позиция начала поиска (INT)>''{{Default|{{Eq}}0}}}}{{OptionalByRef|,<Длина найденного (INT)> | + | '''MatchRE'''(''<Выражение (STRING)>'',''<Строка, в которой происходит поиск (STRING)>''{{Optional|,''<Позиция начала поиска (INT)>''{{Default|{{Eq}}0}}}}{{OptionalByRef|,<Длина найденного (INT)>}}{{Optional|,<Режим поиска (INT)>{{Default|{{Eq}}0}},<Флаги поиска (INT)>{{Default|{{Eq}}0}}}}):''<Позиция, список или таблица (INT,LIST,TAB)>'' |
</code> | </code> | ||
==== Аргументы ==== | ==== Аргументы ==== |
Revision as of 13:33, 20 August 2024
MatchRE, PosRE (Функции для работы с регулярными выражениями) | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Производит проверку шаблона регулярных выражений, заданного первым аргументом в тексте, заданным вторым аргументом. В зависимости от режима поиска может возвратить найденную позицию или ноль, список найденных значений (и значений групп поиска), либо таблицу позиций найденных значений (и значений групп поиска).
Синтаксис
MatchRE(<Выражение (STRING)>,<Строка, в которой происходит поиск (STRING)>,<Позиция начала поиска (INT)>=0,<Длина найденного (INT)>,<Режим поиска (INT)>=0,<Флаги поиска (INT)>=0):<Позиция, список или таблица (INT,LIST,TAB)>
Аргументы
<Выражение (STRING)>
- Шаблон регулярного выражения для поиска.<Строка, в которой происходит поиск (STRING)>
- Текст поиска.<Позиция начала поиска (INT)>
- (необязательный аргумент) Позиция начала поиска (по умолчанию -- с начала текста).<Длина найденного (INT)>
- (необязательный аргумент) (возможен аргумент-переменная (ByRef)) Переменная, получающая длину найденного значения (только для режима поиска 0).<Режим поиска (INT)>
- (необязательный аргумент) Задает режим поиска и тип возвращаемых результатов. Возможны следующие значения:- 0 (по умолчанию): Поиск останавливается на первом найденном результате, функция возвращает его позицию в исходном тексте и его длину в переменной, заданной четвертым аргументом. Если результат не найден, функция возвращает ноль.
- 1: Функция возвращает список, каждое значение которого является одним из найденных результатов.
- 2: Функция возвращает таблицу со столбцами "Index" и "Length". В таблицу заносятся все позиции и длины найденных результатов.
- 3: Функция возвращает список, каждое значение которого является одним из найденных результатов либо значением группы, имеющей индекс и результат (см. краткое описание в строковых функциях, а также описания стандартов регулярных выражений). Наименования списка будут пустыми для результатов, тогда как для значений групп содержать имя группы или номер группы (для групп без имен).
- 4: Функция возвращает таблицу со столбцами "Index", "Length" и "GroupID", в которую занесены все позиции и длины найденных результатов и значенией групп, имеющих индекс и результат (см. краткое описание в строковых функциях, а также описания стандартов регулярных выражений). Столбец "GroupID" будет пустым для результатов, тогда как для значений групп содержать имя группы или номер группы (для групп без имен).
<Флаги поиска (INT)>
- (необязательный аргумент) Число - битовая маска режимов поиска по умолчанию. Имеет следующие биты:- бит 0: Использовать регистро-независимый поиск (1), по умолчанию поиск будет регистро-зависимым. Важно: данный режим изменяет только сравнение обычного текста, сравнение наборов символов ([...]) изменено не будет.
- бит 1: Не использовать конструкции проверки позиции $ и ^, для нахождения начала и конца строки внутри текста, а только для нахождения начала и конца всего текста. По-умолчанию режим отключен.
Возвращаемое значение
Функция возвращает число, список или таблицу в зависимости от режима.
Примеры
Стр:="This image has a resolution of 1440×900 pixels."; аТб:=MatchRE("([0-9]+)×([0-9]+)",Стр,,,4); iMatch:=0; аТб.Select(); While аТб.Next() Do iMatch:=iMatch+IsEmpty(аТб.GroupID); Message(""+?(IsEmpty(аТб.GroupID),"Совпадение "+iMatch+": "," Группа "+аТб.GroupID+": ")+?(аТб.Length=0,"(пустая строка с "+аТб.Index,Mid(Стр,аТб.Index,аТб.Length)+" (с "+аТб.Index+" по "+(аТб.Index+аТб.Length-1))+")"); EndDo; //Будет выведено: //Совпадение 1: 1440×900 (с 32 по 39) // Группа 1: 1440 (с 32 по 35) // Группа 2: 900 (с 37 по 39)