例
以下の例は、最初の文字が大文字 (\p{LU}) で、1 文字以上の追加の文字 (+ 修飾子) が続き、この 2 番目の文字とそれ以降のすべての文字が単語の文字 (英字、数字、およびアンダースコア文字) (\w) であることを指定する正規表現と、文字列と一致させます。
SET strng(1)="Assembly_17"
SET strng(2)="Part5"
SET strng(3)="SheetMetalScrew"
SET n=1
WHILE $DATA(strng(n)) {
IF $MATCH(strng(n),"\p{LU}\w+")
{ WRITE strng(n)," : successful match",! }
ELSE { WRITE strng(n)," : invalid string",! }
SET n=n+1 }
以下の例は、16 進数の正規表現 (hex 41) が “A” の文字と一致するため 1 を返します。
WRITE $MATCH("A","\x41")
以下の例は、指定された文字列が、正規表現で指定されたスペース文字 (\s) および非スペース文字 (\S) の形式と一致するため 1 を返します。
WRITE $MATCH("A# $ 4","\S\S\s\S\s\S")
以下の例は、指定された日付が、正規表現で指定された桁数とリテラルの形式と一致するため 1 を返します。
SET today=$ZDATE($HOROLOG)
WRITE $MATCH(today,"^\d\d/\d\d/\d\d\d\d$")
この形式では、日付と月のそれぞれが 2 桁で指定される必要があり、このため先頭が 0 の場合 10 未満の値が必要になります。
以下の例は、文字列の各文字が正規表現の対応する文字の範囲内にあるため 1 を返します。
WRITE $MATCH("HAL","[G-I][A-C][K-Z]")
以下の例は、不正な regexp 引数を指定しています。これにより、以下に示すようにエラーが発生します。
TRY {
SET str="abcdef"
WRITE "match=",$MATCH(str,"\p{}"),!
}
CATCH exp {
WRITE !!,"CATCH block exception handler:",!
IF 1=exp.%IsA("%Exception.SystemException") {
WRITE "System exception",!
WRITE "Name: ",$ZCVT(exp.Name,"O","HTML"),!
WRITE "Location: ",exp.Location,!
WRITE "Code: ",exp.Code,!!
WRITE "%Regex.Matcher status:"
SET err=##class(%Regex.Matcher).LastStatus()
DO $SYSTEM.Status.DisplayError(err) }
ELSE {WRITE "Unexpected exception type",! }
RETURN
}