メインコンテンツまでスキップ
バージョン: 20 R7 BETA

Match regex

Match regex ( pattern ; aString ; start {; pos_found ; length_found}{; *} ) -> 戻り値 
Match regex ( pattern ; aString ) -> 戻り値

引数説明
patternText通常の式
aStringText検索が実行される文字列
startIntegeraStringで検索が開始する位置
pos_foundInteger array, Integerオカレンスの位置
length_foundInteger array, Integerオカレンスの長さ
*演算子渡された場合、示された位置で検索するのみ
戻り値BooleanTrue = 検索がオカレンスを発見した場合 その他の場合はFalse
Match regex ( pattern ; aString ) -> 戻り値
引数説明
patternText通常の式(完全に一致)
aStringText検索が行われる文字列
戻り値BooleanTrue = 検索でオカレンスが見つかった; それ以外の場合にはFalse

説明

Match regexコマンドを使用して、 "正規表現" と呼ばれるメタ言語で合成された規則のセットと文字列が一致しているかを確認します。

正規表現を渡して、patternで検索します。これは特殊文字を用いて、文字列を説明するために使用される文字のセットから成ります。

aStringに正規表現で検索する文字列を渡します。

startでは、aString中で検索を開始する位置を渡します。

pos_foundlength_foundが変数である場合、コマンド は位置とオカレンスの長さをこれらの変数に返します。配列を渡す場合、コマンドは位置とオカレンスの長さを配列の要素0に、正規表現によってキャプチャされたグループの位置と長さを続く要素に返します。

任意の*** 引数 が渡されると、検索はstartで指定した位置から実行され、パターンにマッチしない場合でもそれ以降を検索しません。

検索がオカレンスを発見した場合、コマンドはTrueを返します。

正規表現に関する詳細は、以下の情報を参照してください:
http://ja.wikipedia.org/wiki/正規表現

pattern引数に渡す正規表現の構文についての詳細は、次のアドレスを参照してください:
https://unicode-org.github.io/icu/userguide/strings/regexp.html#regular-expressions

例題 1

完全に対等なものを検索する(単純なシンタックス):
vfound:=Match regex(pattern;mytext)

 QUERY BY FORMULA([Employees];Match regex(".*smith.*";[Employees]name))

例題 2

位置を用いてテキストで検索する
vfound:=Match regex( pattern;mytext; start; pos_found; length_found)
すべての$1タグを表示する例:

 vStart:=1
 Repeat
    vfound:=Match regex("<.*>";$1;vStart;pos_found;length_found)
    If(vfound)
       ALERT(Substring($1;pos_found;length_found))
       vStart:=pos_found+length_found
    End if
 Until(Not(vfound))

例題 3

括弧を使用したグループキャプチャのサポートを用いて検索する。正規表現では ( ) を使用してグループを定義する。
vfound:=Match regex( pattern;mytext; start; pos_found_array; length_found_array)

 ARRAY LONGINT(pos_found_array;0)
 ARRAY LONGINT(length_found_array;0)
 vfound:=Match regex("(.*)stuff(.*)";$1;1;pos_found_array;length_found_array)
 If(vfound)
    $group1:=Substring($1;pos_found_array{1};length_found_array{1})
    $group2:=Substring($1;pos_found_array{2};length_found_array{2})
 End if

例題 4

示されている位置のパターンの類似を制限しながら検索する
以前の2つの構文のうち1つの最後にスターを追加します。

 vfound:=Match regex("a.b";"---a-b---";1;$pos_found;$length_found)
  //True を返す
 vfound:=Match regex("a.b";"---a-b---";1;$pos_found;$length_found;*)
  //returns False を返す
 vfound:=Match regex("a.b";"---a-b---";4;$pos_found;$length_found;*)
  //returns True を返す

: 返された位置と長さはUnicodeモードまたはテキストが7ビットASCIIタイプの場合のみその意味を持ちます。

エラー管理

エラーのイベントでは、コマンドはエラーを生成しますが、ON ERR CALLコマンドを用いてインストールされたメソッドで、これを検知することができます。