namedPattern

Обозначить именованный шаблон

Описание

пример

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

newpat = namedPattern(pat,name) задает пользовательское имя для pat.

пример

newpat = namedPattern(pat,name,description) дополнительно задает отображение description для pat.

Примеры

свернуть все

Использование namedPattern для назначения шаблона именованному шаблону.

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

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

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

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

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

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

Это выражение долго и трудно считать. Использование namedPattern чтобы назначить шаблон именованному шаблону, mathSymbols.

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

    asManyOfPattern(mathSymbols + whitespacePattern) + mathSymbols

  Using named patterns:

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

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

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"

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

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

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

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

dAndRWordsPat = dWordsPat + whitespacePattern + rWordsPat
dAndRWordsPat = pattern
  Matching:

    letterBoundary + caseInsensitivePattern("d" + lettersPattern + "d") + letterBoundary + whitespacePattern + letterBoundary + caseInsensitivePattern("r" + lettersPattern + "r") + letterBoundary

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

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

    dWords + whitespacePattern + rWords

  Using named patterns:

    dWords: Words that start and end with D
    rWords: Words that start and end with R

  Show more details

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

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

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

Адреса электронной почты соответствуют имени пользователя @ domain.TLD структуры, где имя пользователя и область состоят из идентификаторов, разделенных по периодам. Создайте шаблон, соответствующий идентификаторам, состоящим из любой комбинации алфавитно-цифровых символов и "_" персонажи. Использование maskedPattern чтобы назвать этот шаблон identifier.

identifier = asManyOfPattern(alphanumericsPattern(1) | "_", 1);
identifier = maskedPattern(identifier);

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

subdomain = asManyOfPattern(identifier + ".") + identifier;
domainName = namedPattern(identifier,"domainName");
tld = "com" | "org" | "gov" | "net" | "edu";

Создайте шаблон для соответствия локальной части письма, который совпадает с одним или несколькими идентификаторами, разделенными периодами. Создайте шаблон для соответствия области, TLD и любым потенциальным поддоменам путем объединения ранее определенных шаблонов. Использование namedPattern чтобы назначить каждый из этих шаблонов именованному шаблону.

username = asManyOfPattern(identifier + ".") + identifier;
domain = optionalPattern(namedPattern(subdomain) + ".") + ...
            domainName + "." + ...
            namedPattern(tld);

Объедините все шаблоны в одно выражение шаблона. Использование namedPattern для назначения username, domain, и emailPattern в именованные шаблоны.

emailAddress = namedPattern(username) + "@" + namedPattern(domain);
emailPattern = namedPattern(emailAddress)
emailPattern = pattern
  Matching emailAddress:

    username + "@" + domain

  Using named patterns:

    emailAddress  : username + "@" + domain
      username    : asManyOfPattern(identifier + ".") + identifier
      domain      : optionalPattern(subdomain + ".") + domainName + "." + tld
        subdomain : asManyOfPattern(identifier + ".") + identifier
        domainName: identifier
        tld       : "com" | "org" | "gov" | "net" | "edu"

  Show all details

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

txt = "You can reach me by email at John.Smith@department.organization.org";
extract(txt,emailPattern)
ans = 
"John.Smith@department.organization.org"

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

emailPattern.emailAddress.domain = "mathworks.com"
emailPattern = pattern
  Matching emailAddress:

    username + "@" + domain

  Using named patterns:

    emailAddress: username + "@" + domain
      username  : asManyOfPattern(identifier + ".") + identifier
      domain    : "mathworks.com"

  Show all details

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

свернуть все

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

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

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

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

Описание именованного шаблона, заданное как строковый скаляр, вектор символов или массив ячеек из векторов символов. Когда отображается выражение шаблона, именованные шаблоны и их описания отображаются отдельно от выражения полного шаблона.

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

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

свернуть все

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

Введенный в R2020b