Main Content

namedPattern

名前付きパターンを指定する

説明

newpat = namedPattern(pat) は、pat を含む名前付きパターンを作成します。その名前は、pat の入力名を使用して指定されます。namedPattern を使用すると、パターンの一部に名前を付けることで、複雑なパターン式を整理できます。名前付きパターンは、名前付きパターンの中に入れ子にすることができます。

newpat = namedPattern(pat,name) は、pat にカスタムの名前を指定します。

さらに、newpat = namedPattern(pat,name,description) は、pat の表示 description を指定します。

すべて折りたたむ

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)

いくつかの演算式を含む string を作成した後、テキストからパターンを抽出します。

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"

2 つの名前付きパターンから 1 つのパターンを作成します。パターンに名前を付けることで、パターンの表示にコンテキストが加わります。

次の 2 つのパターンを作成します。1 つは、先頭と末尾が文字 D である単語に一致させます。もう 1 つは、先頭と末尾が文字 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

string を作成し、パターンに一致するテキストを抽出します。

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

メール アドレスに一致する、可読性の高いパターンを作成します。

メール アドレスは、username@domain.TLD の構造になっています。ここで、usernamedomain は、ピリオドで区切られた識別子で構成されます。英数字および "_" 文字の任意の組み合わせから成る識別子に一致するパターンを作成します。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";

メールのローカル部分 (ピリオドで区切られた 1 つ以上の識別子) に一致するパターンを作成します。これまで定義したパターンを組み合わせて、ドメイン、TLD、および可能な任意のサブドメインに一致するパターンを作成します。namedPattern を使用して、これらの各パターンを名前付きパターンに割り当てます。

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

これらすべてのパターンを組み合わせて、1 つのパターン式にします。namedPattern を使用して、名前付きパターンに usernamedomain、および 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

メール アドレスを 1 つ含む string を作成し、テキストからパターンを抽出します。

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、string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。

データ型: char | string | pattern | cell

パターン名。string スカラー、文字ベクトル、または文字ベクトルの cell 配列として指定します。

データ型: char | string | cell

名前付きパターンの説明。string スカラー、文字ベクトル、または文字ベクトルの cell 配列として指定します。パターン式が表示されるとき、名前付きパターンとその説明が、完全なパターン式とは別に表示されます。

データ型: char | string | cell

出力引数

すべて折りたたむ

出力パターン。patternまたは pattern オブジェクトの配列として返されます。

バージョン履歴

R2020b で導入