exponenta event banner

possessivePattern

Шаблон соответствия без обратного отслеживания

Синтаксис

Описание

пример

newpat = possessivePattern(pat) создает шаблон, который не выполняет обратную трассировку в пределах pat однажды pat спички.

Если символ может быть сопоставлен с несколькими шаблонами в выражении, например цифровыми символами с alphanumericsPattern + digitsPatternвсе возможные комбинации совпадений могут быть проверены в попытке найти успешное совпадение. Этот процесс называется обратным отслеживанием.

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

Примеры

свернуть все

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

Создать txt в виде строки, состоящей из букв и цифр. Создать nonpossessive как шаблон, который соответствует буквам или цифрам с alphanumericsPattern за которыми следуют цифры с digitsPattern. Самостоятельно, alphanumericsPattern соответствует всей строке, но позволяет выполнять обратное отслеживание так, что digitsPattern также способен соответствовать.

txt = "abc123";
nonpossessive = alphanumericsPattern + digitsPattern;
successfulMatch = contains(txt,nonpossessive)
successfulMatch = logical
   1

Сделать alphanumericsPattern притяжательный. Обладательность предотвращает обратное отслеживание, так что alphanumericsPattern соответствует всей строке и не выполняет обратную трассировку, чтобы разрешить digitsPattern чтобы также соответствовать. Этот атрибут вызывает possessive не соответствовать txt.

possessive = possessivePattern(alphanumericsPattern) + digitsPattern;
unsuccessfulMatch = contains(txt,possessive)
unsuccessfulMatch = logical
   0

Входные аргументы

свернуть все

Входной шаблон, заданный как pattern, строковый массив, символьный вектор или массив ячеек символьных векторов.

Типы данных: char | string | pattern | cell

Выходные аргументы

свернуть все

Выходной шаблон, возвращаемый как pattern или массив объектов массива.

Представлен в R2020b