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)

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

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