MatchState (クラス)
public sealed MatchState
パッケージ: CURL.LANGUAGE.REGEXP

正規表現のマッチの結果を保持します。

説明

Matcher.new-state または Matcher.match を使用して作成します。
これらのオブジェクトのいずれか 1 つが、任意のマッチの結果の中で使用されます。クエリには、MatchState.getMatchState.get-rangeMatchState.get-all のいずれかを使います。
詳細は、Matcher を参照してください。

メソッド
get:マッチの後にキャプチャされた部分文字列を抽出します。
public final {MatchState.get name:any}:#String
get-all:一致した部分文字列のうち、名前が正の整数であるものを配列として返します。
public final {MatchState.get-all}:StringArray
get-range:キャプチャされた部分文字列 name の開始インデックスと長さを返します。MatchState.get と異なり、このメソッドではメモリが割り当てられません。

戻り値は数値のペア (START, LENGTH) です。キャプチャされた式が一致しなかった場合、戻り値は (-1, 0) になります。
public final {MatchState.get-range name:any}:(start:int, length:int)
substitute:テンプレートを基に一致した文字列の置換文字列を作成します。
public final {MatchState.substitute
output-template:StringInterface,
buf:StringBuf = {StringBuf}
}:StringBuf
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize







メソッド詳細
get (メソッド)
public final {MatchState.get name:any}:#String

マッチの後にキャプチャされた部分文字列を抽出します。

name: マッチの結果の中にあるキャプチャされた部分文字列の名前。

name が正の整数 (N とする) である場合、N 番目のかっこ内の内容に一致する部分文字列を返します。


{import * from CURL.LANGUAGE.REGEXP}
{value
    let m:Matcher = {Matcher "(.*):(.*):(.*)"}
    let b:VBox = {VBox}
    {if-non-null state = {m.match "beginning:middle:end"} then
        {b.add "first: "&state[1]}
        {b.add "second: "&state[2]}
        {b.add "third: "&state[3]}
    }
    b
}


get-all (メソッド)
public final {MatchState.get-all}:StringArray

一致した部分文字列のうち、名前が正の整数であるものを配列として返します。

説明

一致しない部分文字列には空文字が設定されます。


get-range (メソッド)
public final {MatchState.get-range name:any}:(start:int, length:int)

キャプチャされた部分文字列 name の開始インデックスと長さを返します。MatchState.get と異なり、このメソッドではメモリが割り当てられません。

戻り値は数値のペア (START, LENGTH) です。キャプチャされた式が一致しなかった場合、戻り値は (-1, 0) になります。



substitute (メソッド)
public final {MatchState.substitute
output-template:StringInterface,
buf:StringBuf = {StringBuf}
}:StringBuf

テンプレートを基に一致した文字列の置換文字列を作成します。

output-template: string 内のマッチする部分文字列を置換する方法を示す StringInterface。この文字列内のバックスラッシュでない文字は、結果の文字列にそのままコピーされます。

部分文字列をキャプチャするには、このマッチングを作成するのに使われる正規表現内でかっこを使います。キャプチャされた部分文字列を output-template に挿入するには、バックスラッシュに続いて 1 桁の数字を指定します。この数字は、キャプチャされた部分文字列のうちどれを挿入するかを指定するものです。たとえば \1 と指定した場合、regexp 中の最初のかっこ (かっこは左から順に数える) の内容と一致したテキストが挿入されます。\9 と指定した場合は、9 番目のかっこの内容と一致したテキストが挿入されます。regexp 中で部分文字列が 10 個以上キャプチャされた場合、10 番目以降の部分文字列を挿入するには、その数字をかっこで囲みます (例:\(10))。名前付き部分文字列は、シンタックス (?P=name) を使用して参照可能です。

リテラルのバックスラッシュ文字 (\) を挿入するには、バックスラッシュを 2 つ重ねて指定します (\\)。
buf: 置換された文字列が追加される buffer です。その buffer がメソッドによって返されます。

説明

与えられた output-template を使用したこのオブジェクトによって表示される一致した文字列の置換文字列を作成し、buf に追加します。 一致する文字列がない場合(MatchState.get が、キー "match" に null を返した場合)エラーを作成します。 regexp-subst も参照してください。
導入: バージョン 6.0