maskedPattern

Шаблон с заданным отображаемым именем

Описание

пример

newpat = maskedPattern(pat) создает шаблон, который использует входное имя pat при отображении шаблона выражения newpat. Можно использовать maskedPattern для упрощения длинных, сложных выражений шаблона путем скрытия некоторых деталей в выражении.

пример

newpat = maskedPattern(pat,mask) задает имя для отображения, mask, при отображении шаблона выражения newpat.

Примеры

свернуть все

Использование maskedPattern отображение переменной вместо сложного выражения шаблона.

Создайте шаблон, который совпадает с простыми арифметическими выражениями, состоящими из чисел и арифметических операторов.

mathSymbols = asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)
mathSymbols = pattern
  Matching:

    asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)

Создайте шаблон, который совпадает с арифметическими выражениями с пробелами между символами, используя arithmeticPat.

longExpressionPat = asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols
longExpressionPat = pattern
  Matching:

    asManyOfPattern(asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1) + whitespacePattern) + asManyOfPattern(digitsPattern | characterListPattern("+-*/="),1)

Отображаемое выражение шаблона является длинным и трудным для чтения. Использование maskedPattern чтобы отобразить имя переменной, mathSymbols, вместо выражения шаблона.

mathSymbols = maskedPattern(mathSymbols);
shortExpressionPat = asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols
shortExpressionPat = pattern
  Matching:

    asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols

  Show all details

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

txt = "What is the answer to 1 + 1? Oh, I know! 1 + 1 = 2!";
arithmetic = extract(txt,shortExpressionPat)
arithmetic = 2x1 string
    "1 + 1"
    "1 + 1 = 2"

Использование maskedPattern отображение заданного имени для сложного выражения шаблона.

Создайте два шаблона: тот, который совпадает со словами, которые начинаются и заканчиваются буквой D, и тот, который совпадает со словами, которые начинаются и заканчиваются буквой R.

dWordsPat = letterBoundary + caseInsensitivePattern("d" + lettersPattern + "d") + letterBoundary;
rWordsPat = letterBoundary + caseInsensitivePattern("r" + lettersPattern + "r") + letterBoundary;

Использование maskedPattern отображение заданного имени вместо выражений шаблона. Создайте шаблон с помощью маскированных шаблонов, которые находят слова, которые начинаются и заканчиваются D, а затем словом, которое начинается и заканчивается R.

dWordsPat = maskedPattern(dWordsPat,"Words that start and end with D");
rWordsPat = maskedPattern(rWordsPat,"Words that start and end with R");
dAndRWordsPat = dWordsPat + whitespacePattern + rWordsPat
dAndRWordsPat = pattern
  Matching:

    Words that start and end with D + whitespacePattern + Words that start and end with R

  Show all details

Создайте строку, а затем извлеките шаблон из текста.

txt = "Dad, look at the divided river!";
words = extract(txt,dAndRWordsPat)
words = 
"divided river"

Создайте пользовательские функции шаблона и используйте maskedPattern чтобы скрыть детали.

Создайте функцию atLeastOneOfPattern который принимает шаблон входа pat и создает шаблон, newPat, который соответствует одному или нескольким последовательным образцам pat. Использование maskedPattern чтобы скрыть детали шаблона при отображении.

function newPat = atLeastOneOfPattern(pat)
arguments
    pat pattern
end

newPat = asManyOfPattern(pat,1);
newPat = maskedPattern(newPat,compose("atLeastOneOfPattern(%s)",pat));

end

Функции atLeastOneOfPattern с входом "a" и отобразите newPat.

newPat = atLeastOneOfPattern("a")
newPat = 

  pattern

  Matching:

    atLeastOneOfPattern("a")

  Show all details

Создайте шаблон hexDigit который соответствует числовым символам от 0 до 9 и буквам a-f с characterListPattern. Начиная с characterListPattern учитывает регистр, использует caseInsensitivePattern так что hexDigit соответствует независимо от примера символа.

hexDigit = characterListPattern('0','9') | characterListPattern('a','f');
hexDigit = caseInsensitivePattern(hexDigit);
hexDigit = maskedPattern(hexDigit)
hexDigit = pattern
  Matching:

    hexDigit

  Show all details

hexDigit соответствует отдельным цифрам шестнадцатеричных чисел. Соответствовать полным шестнадцатеричным числам путем создания шаблона, соответствующего буквенному тексту "0x" за которым следует одно или несколько вхождений hexDigit.

hexNumberPattern = "0x" + asManyOfPattern(hexDigit, 1)
hexNumberPattern = pattern
  Matching:

    "0x" + asManyOfPattern(hexDigit,1)

  Show all details

Используйте этот шаблон для извлечения шестнадцатеричных чисел из строки.

hexNumbers = extract("The answer is 0x2A", hexNumberPattern)
hexNumbers = 
"0x2A"

Входные параметры

свернуть все

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

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

Имя маскированного шаблона, заданное как строковый скаляр, вектор символов или массив ячеек из векторов символов.

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

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

свернуть все

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

Введенный в R2020b