公開日: 11/25/2021

文字パターン関数

パターンマッチ式の構成と使用の詳細は、『スクリプトガイド』のパターンマッチを参照してください。

Pat Abort()

説明

パターンマッチを即座に終了する引用符付きパターンを生成する。バックアップも再試行も行いません。条件の割り当ては行われません。すでに行われた即座の割り当てが維持されます。

戻り値

マッチが終了したときは0

引数

なし

Pat Altern(pattern1, <pattern2, ...>)

説明

パターン引数のいずれかにマッチする引用符付きパターンを生成する。

戻り値

引用符付きパターン

引数

1つ以上のパターン。

Pat Any(string)

説明

引数のいずれか1文字にマッチする引用符付きパターンを生成する。

戻り値

引用符付きパターン

引数

pattern

引用符付き文字列。

次も参照

『スクリプトガイド』の正規表現

Pat Arb()

説明

任意の引用符付き文字列にマッチする引用符付きパターンを生成する。始めは引用符付きヌル文字列とマッチします。バックアップが行われるたびにマッチする文字列が1文字ずつ長くなります。

戻り値

引用符付きパターン

引数

なし

p = "最後ではなく" + Pat Arb() >? stuffInTheMiddle + "出てきます";
Pat Match( "ストーリーの最後ではなく始めの方で、3匹のクマが出てきます", p );
Show( stuffInTheMiddle );

stuffInTheMiddle = "始めの方で、3匹のクマが"

次も参照

『スクリプトガイド』の正規表現

Pat Arb No(pattern)

説明

引数(pattern)に0回以上マッチする引用符付きパターンを生成する。

戻り値

引用符付きパターン

引数

pattern

マッチ対象の引用符付きパターン。

adjectives = "Lサイズ" | "Mサイズ" | "Sサイズ" | "温かい" | "冷たい" | "熱い" | "甘め";
rc = Pat Match( "Mサイズの甘めの熱い紅茶を1つください",
               Pat Arbno( adjectives | Pat Any("の") ) >> adj +
               ("紅茶" | "コーヒー" | "ミルク") );
Show( rc, adj );

rc = 1;

adj = "Mサイズの甘めの熱い";

Pat At(varName)

説明

引用符付きヌル文字列にマッチする引用符付きパターンを生成し、ソース文字列の現在の場所を、指定したJSL変数(varName)に代入する。割り当ては即座に行われます。値が割り当てられた変数をexpr()で使用することにより、残りのマッチを変更することができます。

戻り値

引用符付きパターン

引数

varName

結果を格納する変数の名前。

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 );

まず次が生成されます。

early = "123"

late = ""

その後、次が生成されます。

early = ""

late = "12"

Pat Break(string)

説明

引数に含まれていない0個以上の文字にマッチする引用符付きパターンを生成し、引数に含まれる文字の前でパターンマッチを停止させる。引数に含まれる文字が見つからない場合は失敗します(特に、停止のための文字が見つからないまま引用符付きソース文字列を最後まで検索し終わった場合)。

戻り値

引用符付きパターン

引数

string

引用符付き文字列。

Pat Concat(pattern1, pattern2 <pattern3, ...>)

Pattern1 + Pattern2 + ...

説明

引数で指定したパターンに順番にマッチする引用符付きパターンを生成する。

戻り値

引用符付きパターン

引数

2つ以上の引用符付きパターン。

Pat Conditional(pattern, varName)

説明

マッチが終了し成功した場合、引用符付きパターンマッチの結果を第2引数の変数(varName)に保存する。

戻り値

引用符付きパターン

引数

pattern

マッチ対象の引用符付きパターン。

varName

結果を格納する変数の名前。

type = "未定義";
rc = Pat Match(
	"青りんご",
	Pat Conditional( "赤" | "青", type ) + "りんご"
);
Show( rc, type );

rc = 1;

type = "青";

Pat Fail()

説明

マッチングを先に進ませない引用符付きパターンを生成する。マッチングはバックアップし、別のマッチングを試行します。別のマッチングが残っていない場合、マッチングは失敗し、Pat Matchが0を戻します。

戻り値

マッチが失敗したときは0

引数

なし

Pat Fence()

説明

マッチングが先に進む場合は、成功し、引用符付きヌル文字列にマッチするパターンを生成する。バックアップが生じた場合は、失敗します。一部のマッチの最適化に使用できます。

戻り値

マッチが成功したときは1、そうでなければ0

引数

なし

Pat Immediate(pattern, varName)

説明

パターンマッチの結果を第2引数(varName)の名前の変数に即座に保存する。

戻り値

引用符付きパターン

引数

pattern

マッチ対象の引用符付きパターン。

varName

結果を格納する変数の名前。

type = "未定義";
rc = Pat Match(
	"青りんご",
	("赤" | "青") >> type + "なし"
);
Show( rc, type );

rc = 0

type = "青"

マッチが失敗した場合でも、割り当ては即座に行われます。

Pat Len(int)

説明

n文字にマッチする引用符付きパターンを生成する。

戻り値

引用符付きパターン

引数

int

文字数を指定する整数。

次も参照

『スクリプトガイド』の固定フィールドの文字列の解析

Pat Look Ahead(pattern, Boolean)

説明

現在の位置以後でのゼロ幅のパターンマッチ。

引数

pattern

引用符付きパターン。

Boolean

0(デフォルト)は、マッチを表します。1は、負のマッチまたは非マッチを表します。

Pat Look Behind(pattern, Boolean)

説明

現在の位置以前でのゼロ幅の引用符付きパターンマッチ。

引数

pattern

引用符付きパターン。

Boolean

0(デフォルト)は、マッチを表します。1は、負のマッチまたは非マッチを表します。

Pat Match(source text, pattern, <replacement string>, <"NULL">, <"ANCHOR">, <"MATCHCASE">, <"FULLSCAN">)

説明

Pat Matchは、source textに対して引用符付きパターン(pattern)を実行する。直接指定する方法か、または別のJSL変数へパターンを割り当てておく方法により、パターンを生成する必要があります。

戻り値

パターンが見つかれば1、そうでなければ0

必須の引数

source text

検索対象のテキストを示す引用符付き文字列または引用符付き文字列変数。

pattern

検索対象のテキストを示す引用符付きパターンまたはパターン変数。

オプションの引数

replacement string

ソーステキスト内でマッチしたパターンを指定の引用符付き文字列に置換する。

"NULL"

ANCHOR、MATCHCASE、またはFULLSCANが必要で、かつ置換テキストがない場合の第3引数のプレースホルダー。

"ANCHOR"

引用符付き文字列の冒頭でパターンマッチを開始する。次のパターンマッチは文字列の冒頭にパターン「cream」がないため、失敗となります。

Pat Match( "coffee with cream and sugar", "cream", NULL, ANCHOR );

"MATCHCASE"

(オプション)パターンマッチで大文字/小文字を区別するためのオプション。デフォルトのPat Match()は大文字/小文字を区別しません。

"FULLSCAN"

(オプション)Pat Matchにすべての候補を強制的に検索させるオプション。検索数が多いほど、多くのメモリが必要となります。デフォルトでは、Pat Match()FULLSCANを使用せず、再帰を停止する、あるいはマッチングを継続するための前提を決めて動作します。

次も参照

『スクリプトガイド』のパターンマッチ

Pat Not Any(string)

説明

引数内に含まれていない1つの文字にマッチするパターンを生成する。

戻り値

引用符付きパターン

引数

string

引用符付き文字列。

次も参照

『スクリプトガイド』のパターンのトラブルシューティング

Pat Pos(int)

説明

現在の位置が文字列の左端からintのとき、引用符付きヌル文字列にマッチするパターンを生成する。その他の場合は失敗します。

戻り値

引用符付きパターン

引数

int

引用符付き文字列内の位置を指定する整数。

次も参照

『スクリプトガイド』の固定フィールドの文字列の解析

Pat R Pos(int)

説明

現在の位置が文字列の右端からintのとき、引用符付きヌル文字列にマッチするパターンを生成する。その他の場合は失敗します。

戻り値

引用符付きパターン

引数

int

引用符付き文字列内の位置を指定する整数。

次も参照

『スクリプトガイド』の固定フィールドの文字列の解析

Pat R Tab(int)

説明

引用符付き文字列の最後からintの位置までにマッチする引用符付きパターンを生成する。0文字以上の文字とマッチできます。後ろに移動する場合、または文字列の最後を超える場合は失敗します。

戻り値

引用符付きパターン

引数

int

引用符付き文字列内での位置を指定する整数。

次も参照

『スクリプトガイド』の固定フィールドの文字列の解析

Pat Regex(string)

説明

指定された正規表現とマッチする引用符付きパターンを生成する。正規表現を記述する引数stringは、引用符付きの文字列で指定する必要があります。

戻り値

引用符付きパターン

引数

string

引用符付き文字列。

次も参照

『スクリプトガイド』のパターンと大文字/小文字

Pat Rem()

説明

引用符付き文字列の残りにマッチする引用符付きパターンを生成する。Pat R Tab(0)と等価です。

戻り値

引用符付きパターン

引数

なし

次も参照

『スクリプトガイド』の固定フィールドの文字列の解析

Pat Repeat(pattern, minimum, maximum, <"GREEDY"|"RELUCTANT">)

説明

指定された引用符付パターン(pattern)に最小(minimum)~最大(maximum)回マッチするパターンを生成する。

戻り値

引用符付きパターン

必須の引数

pattern

マッチ対象のパターン。

minimum

最大回数。最小回数より小さい整数。

maximum

最小回数。最大回数より大きい整数。

オプションの引数

"GREEDY"|"RELUCTANT"

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)と同じです。

次も参照

『スクリプトガイド』のパターンと大文字/小文字

Pat Span(string)

説明

引数内の文字で構成されている1文字以上(0ではなく)の文字列にマッチするパターンを生成する。これはGREEDYのため、常に、可能な限り長い引用符付き文字列とのマッチを行います。マッチする文字が0文字の場合は失敗します。

戻り値

引用符付きパターン

引数

string

引用符付き文字列。

次も参照

『スクリプトガイド』のパターンマッチ

Pat String(string)

説明

引用符付き文字列引数にマッチするパターンを生成する。

戻り値

引用符付きパターン

引数

string

引用符付き文字列。

Pat Succeed()

説明

バックアップが行われた場合でも常に成功するパターンを生成する。引用符付きヌル文字列とマッチします。

戻り値

マッチが成功したときは1

引数

なし

Pat Tab(int)

説明

引用符付きソース文字列のintの位置までマッチするパターンを生成する。0文字以上の文字とマッチできます。後ろに移動する場合、または文字列の最後を超える場合は失敗します。

戻り値

パターン

引数

int

引用符付き文字列内での位置を指定する整数。

次も参照

『スクリプトガイド』の固定フィールドの文字列の解析

Pat Test(expr)

説明

式(expr)が0以外のときは、成功し、引用符付きヌル文字列とマッチするパターンを生成する。そうでない場合は失敗します。

戻り値

引用符付きパターン

引数

expr

式。

メモ

通常、引数にはexpr()が使用されます。通常、テストは、Pat ImmediatePat Conditional、およびPat Atから戻された現在の値に対して行います。expr()を使用しないと、テストは、パターンマッチを行っている最中ではなく、パターンを生成した時点の値によって行われます。この値により、パターンマッチは常に成功するか常に失敗するかのどちらかとなってしまうため、多くの場合、意図したとおりに動作しません。

nRaws = 0;
whichRaw = 3;
string = "生米生麦生卵";
rc = Pat Match(
	string,
	"生" + Pat Test(
		Expr(
			nRaws = nRaws + 1;
			nRaws == whichRaw;
		)
	),
	"ゆで"
);
Show( rc, string, nRaws );

rc = 1

string = "生米生麦ゆで卵"

nRaws = 3

Regex Match(source, pattern, <replacement string>|<"MATCHCASE">, <"NULL">)

説明

引用符付き文字列で指定されたソース(source)に対して、引用符付きパターン(pattern)のマッチを実行する。

戻り値

パターン

必須の引数

source

引用符付き文字列。

pattern

引用符付きパターン。

オプションの引数

replacement string

元の文字列を置き換える引用符付き文字列。

"MATCHCASE"

MATCHCASEを指定しない場合、大文字と小文字は区別されない。

"NULL"

MATCHCASEを指定しても、文字列の置換はしないことを示す。

Regex Match(
	"person=Fred id=77 friend= favorite=tea", // source
	"(\w+)=(\S*) (\w+)=(\S*) (\w+)=(\S*) (\w+)=(\S*)" // pattern
);

{"person=Fred id=77 friend= favorite=tea", "person", "Fred", "id", "77", "friend", "", "favorite", "tea"}

 
// 大文字と小文字の区別なし、置換なし
Regex Match( "beliEve", "([aeiou])(.*?)(\1)" );

{"eliE", "e", "li", "E"}

// 大文字と小文字の区別あり、置換なし
Regex Match( "beliEve", "([aeiou])(.*?)(\1)", NULL, MATCHCASE );

{"eliEve", "e", "liEv", "e"}

次も参照

『スクリプトガイド』のRegex Match

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).