possessivePattern

Совпадайте с шаблоном без обратного отслеживания

Описание

пример

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

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

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