Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

パターン・マッチングの例

ここではパターンの例をいくつか示し、パターン・マッチング演算子がどのように機能するかを学習します。

  • 社会保障番号の形式は、3 桁の数字、ハイフン、2 桁の数字、ハイフン、4 桁の数字です。初心者が間違いやすいパターンは、3N"-"2N"-"4N あるいは、3N1P2N1P4N です。前者はハイフン記号の指定が足りず、後者はすべての句読記号を許可しています。

  • フィートやインチなど高さの単位は、文字でも記号でも表記することができます。引用を引用符で囲む場合 (変数 ht2 とパターン)、二重引用符を使用します。

  • 通常、姓は文字のみで表記されますが、記号や数を含む場合もあります。.ANP パターンは、姓もしくは姓以外の文字列も認識します (誤検出)。

  • 文字列の最初の文字のみを検証したい場合、.E で終わるパターンを記述します。これは、“文字数” を表しています。

ターミナル


USER>set ssn = "012-34-5678"

USER>if ssn?3N1"-"2N1"-"4N {write "valid"}
valid
USER>set ht1 = "6 feet 2 inches", ht2 = "5' 10"""

USER>if ht1?1N1(1" feet",1"'")1" "1.2N1(1" inches",1"""") {write "valid"}
valid
USER>if ht2?1N1(1" feet",1"'")1" "1.2N1(1" inches",1"""") {write "valid"}
valid
USER>set last1 = "O'Reilly", last2 = "McMahon 3rd", last3 = "/////32351abcde"

USER>if last1?.ANP {write "valid"} ; good name
valid
USER>if last2?.ANP {write "valid"} ; good name
valid
USER>if last3?.ANP {write "valid"} ; bad name (false positive)
valid
USER>set c = "InterSystems" if c?1"Inter".E {write "valid"}
valid
USER>

以下の複合パターンを使用すると、単純な .ANP パターンが受け入れた文字列を拒否する一方で、前の例 (O'Reilly、McMahon 3rd) のような姓を検証できます。

ターミナル


USER>set last1 = "O'Reilly", last2 = "McMahon 3rd", last3 = "/////32351abcde"

USER>if last1?.1(1"O'",1"Mc")1U.L.1(1" "1(1"Sr",1"Jr",1"3rd",1"4th")) {write "valid"}
valid
USER>if last2?.1(1"O'",1"Mc")1U.L.1(1" "1(1"Sr",1"Jr",1"3rd",1"4th")) {write "valid"}
valid
USER>if last3?.1(1"O'",1"Mc")1U.L.1(1" "1(1"Sr",1"Jr",1"3rd",1"4th")) {write "valid"}

USER>

FeedbackOpens in a new tab