exponenta event banner

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