regexp-subst (プロシージャ)
public {regexp-subst
regexp:Object,
string:StringInterface,
output-template:StringInterface,
replace-all?:bool = false
}:String
パッケージ: CURL.LANGUAGE.REGEXP

正規表現とマッチした部分文字列を置換します。

regexp: 正規表現を含む StringInterface、またはコンパイル済み正規表現を示す Matcher。詳細については、『Curl 開発者ガイド』の「正規表現」の章を参照してください。
string: regexp とマッチされる StringInterface
output-template: string 内のマッチする部分文字列を置換する方法を示す StringInterface。この文字列内のバックスラッシュ文字は、検索結果の文字列にそのままコピーされます。

部分文字列をキャプチャするには、regexp 内でかっこを使います。キャプチャされた部分文字列を output-template に挿入するには、バックスラッシュと 1 桁の数字を指定します。この数字は、キャプチャされた部分文字列のうちどれを挿入するかを指定するものです。たとえば \1 と指定した場合、regexp 中の最初のかっこ (かっこは左から順に数える) の内容と一致したテキストが挿入されます。\9 と指定した場合は、9 番目のかっこの内容と一致したテキストが挿入されます。regexp 中で部分文字列が 10 個以上キャプチャされた場合、10 番目以降の部分文字列を挿入するには、その数字をかっこで囲みます (例:\(10))。

リテラルのバックスラッシュ文字 () を挿入するには、バックスラッシュを 2 つ重ねて指定します (\)。
replace-all?: マッチした部分文字列を置換するかどうかを制御するフラグ。

戻り値

正規表現を置換した後の String

例外のスロー

regexp が有効な正規表現を含まない文字列の場合、または output-template のキャプチャされた部分文字列の参照が regexp と一致しない場合、例外をスローします。


{import * from CURL.LANGUAGE.REGEXP}
{value
    let str:String =
        "juice, eggs and bacon, sausage and milk, I love food"
    {regexp-subst "juice\|bacon\|milk\|food",
        str,
        "SPAM",
        replace-all?=true}
}


{import * from CURL.LANGUAGE.REGEXP}
{regexp-subst "(\\w+) is good",
    "Everyone knows that food is good",
    "\\1 is OK, but Curl is great"}