パターンマッチ表現の作成方法と使用方法の詳細については、『スクリプトガイド』の「データタイプ」章を参照してください。
パターンマッチを即座に終了するパターンを生成する。バックアップも再試行も行いません。条件の割り当ては行われません。すでに行われた即座の割り当てが維持されます。
p = "最後ではなく" + Pat Arb() >? stuffInTheMiddle + "出てきます";
Pat Match( "ストーリーの最後ではなく始めの方で、3匹のクマが出てきます", p );
Show( stuffInTheMiddle );
引数(pattern)に0回以上マッチするパターンを生成する。
adjectives = "Lサイズ" | "Mサイズ" | "Sサイズ" | "温かい" | "冷たい" | "熱い" | "甘め";
rc = Pat Match( "Mサイズの甘めの熱い紅茶を1つください",
Pat Arbno( adjectives | Pat Any("の") ) >> adj +
("紅茶" | "コーヒー" | "ミルク") );
Show( rc, adj );
ヌル文字列にマッチするパターンを生成し、ソース文字列の現在の場所を、指定したJSL変数(varName)に代入する。割り当ては即座に行われます。値が割り当てられた変数をexpr()で使用することにより、残りのマッチを変更することができます。
p = ":" + Pat At( listStart ) + Expr(
If( listStart == 1,
Pat Immediate( Pat Len( 3 ), early ),
Pat Immediate( Pat Len( 2 ), late )
)
);
early = "";
late = "";
Pat Match( ":123456789", p );
Show( early, late );
early = "";
late = "";
Pat Match( " :123456789", p );
Show( early, late );
マッチが終了し成功した場合、パターンマッチの結果を第2引数の変数(varName)に保存する。
type = "未定義";
rc = Pat Match(
"青りんご",
Pat Conditional( "赤" | "青", type ) + "りんご"
);
Show( rc, type );
パターンマッチの結果を第2引数(varName)の名前の変数に即座に保存する。
type = "未定義";
rc = Pat Match(
"青りんご",
("赤" | "青") >> type + "なし"
);
Show( rc, type );
Pat Matchは、ソーステキスト(SourceText)に対してパターン(Pattern)を実行する。直接指定する方法か、または別のJSL変数へパターンを割り当てておく方法により、パターンを生成する必要があります。
Pat Match( "coffee with cream and sugar", "cream", NULL, ANCHOR );
(オプション)パターンマッチで大文字/小文字を区別するためのオプション。デフォルトのPat Match()は大文字/小文字を区別しません。
(オプション)Pat Matchにすべての候補を強制的に検索させるオプション。検索数が多いほど、多くのメモリが必要となります。デフォルトでは、Pat Match()はFULLSCANを使用せず、再帰を停止する、あるいはマッチングを継続するための前提を決めて動作します。
現在の位置が文字列の左端からintのとき、ヌル文字列にマッチするパターンを生成する。その他の場合は失敗します。
現在の位置が文字列の右端からintのとき、ヌル文字列にマッチするパターンを生成する。その他の場合は失敗します。
指定された正規表現とマッチするパターンを生成する。正規表現を記述する引数stringは、引用符付きの文字列で指定する必要があります。
文字列の残りにマッチするパターンを生成する。Pat R Tab(0)と等価です。
GREEDYが指定されている場合、まず最大回数だけ試行してから最小回数まで戻る。RELUCTANTが指定されている場合、まず最小回数だけ試行してから最大回数まで進む。
Pat Arbno(p)は Pat Repeat(p, 0, infinity, RELUCTANT)と同じです。
Pat Repeat(p)はPat Repeat(p, 1, infinity, GREEDY)と同じです。
Pat Repeat(p, n)はPat Repeat(p, n, infinity, GREEDY)と同じです。
Pat Repeat(p, n, m)はPat Repeat(p, n, m, GREEDY)と同じです。
ソース文字列のintの位置までマッチするパターンを生成する。0文字以上の文字とマッチできます。後ろに移動する場合、または文字列の最後を超える場合は失敗します。
式(expr)が0以外のときは、成功し、ヌル文字列とマッチするパターンを生成する。そうでない場合は失敗します。
通常、引数にはexpr()が使用されます。通常、テストは、Pat Immediate、Pat Conditional、およびPat Atから戻された現在の値に対して行います。expr()を使用しないと、テストは、パターンマッチを行っている最中ではなく、パターンを生成した時点の値によって行われます。この値により、パターンマッチは常に成功するか常に失敗するかのどちらかとなってしまうため、多くの場合、意図したとおりに動作しません。
nCats = 0;
whichCat = 3;
string = "生米生麦生卵";
rc = Pat Match(
string,
"生" + Pat Test(
Expr(
nCats = nCats + 1;
nCats == whichCat;
)
),
"ゆで"
);
Show( rc, string, nCats );