パターンマッチング関数
SenseTalkのパターン言語では、自然言語を用いて検索に使用できるパターンを定義できます。以下の関数は、パターン言語の定義とともに使用できます。
containsoperatoris inoperatorbegins withoperatorends withoperatoroffset,range,every offset,every rangefunctionsreplacecommanddeletecommandsplitcommand,split byfunctionnumber of occurrences offunction
The matches operator is used to test whether some text matches a pattern:
- [パターン言語に関する情報は、SenseTalk Pattern Language Basicsを参照してください。](stk-text-operators.md#matches-operator)
さらに、以下で説明されている演算子や関数は、パターンとの使用に特化しています。
Match, Every Match 関数
挙動: match関数とevery match関数を用いて、テキスト内のパターンを探すことができます。match関数は指定したパターンの最初の出現を見つけ、every match関数はソース内のパターンのすべての出現を見つけます。
パラメータ:
- the match of pattern (必須): 角括弧( < ... > )内のパターン言語構文か変数として指定できます。パターン言語構文に関する情報は、Pattern Language Syntaxを参照してください。
- in source (必須): 引用符で囲まれた文字列、変数、または テキストを生成する式として指定できます。
- after position (オプション): テキスト内の文字位置を指定する数値で、パターンマッチの検索が次の文字位置から始まるようにします。
- before position (オプション): テキスト内の文字位置を指定し、その文字位置の前の文字でパターンマッチの検索が終わるようにします。
- caseSensitivity (オプション): 標準の大文字小文字の区別フレーズ(
caseSensitive,with case, 等)を指定して、テキストの検索が大文字小文字を区別するかどうかを決定します。デフォルト:caseInsensitive
構文:
{the} match of pattern [in | within] source { [before | after] [ {position | location} position | {the} end ] } {caseSensitivity}
every match of pattern [in | within] source { [before | after] [ {position | location} position | {the} end ] } {caseSensitivity}match( pattern, source {, position {, caseSensitive {, treatPositionAsBefore }}} )
everyMatch( pattern, source {, position {, caseSensitive {, treatPositionAsBefore }}} )
match()またはeveryMatch()の伝統的な関数呼び出し構文を使用する場合、最初の2つのパラメータは必須で、残りの3つはオプションです。この場合の_caseSensitive_パラメータはブール値(デフォルト: False)で、検索が大文字小文字を区別するかどうかを示します。_treatPositionAsBefore_パラメータはブール値(デフォルト: False)で、検索が_position_パラメータで指定された位置の前に行われるべきかどうかを指定します。
返り値: パターンが見つかったソーステキストの位置に関する情報を提供する1つ以上のプロパティリスト。match関数は1つのプロパティリストを返し、every match関数は見つかった各マッチに対してプロパティリストを返します。各マッチのプロパティリストには少なくとも2つのプロパティが含まれます:
text: マッチした完全なテキスト。text_range: マッチしたテキストが位置していたソースの文字範囲。
パターンが1つ以上のキャプチャグループを 含む場合、マッチプロパティリストには、含まれる各キャプチャグループに対するプロパティのペアも含まれます:
- 名前:キャプチャグループの名前。
- 名前_範囲:キャプチャグループが見つかった範囲。
フルマッチテキストは常にプロパティ名 text で返されるため、パターン内のキャプチャグループに text を名前として使用しないでください。
例:
put the match of <punctuation> within "Green 1: 112-14" --> {text:":", text_range:"8" to "8"}
例:
put the match of <3 digits> in "1bc3 8472QX905" --> {text:"847", text_range:"6" to "8"}
例:
put match(<3 digits>, "1bc3 8472QX905") --> {text:"847", text_range:"6" to "8"}
例:
put every match of <3 digits> in "123456789" --> [{text:"123", text_range:"1" to "3"},{text:"456", text_range:"4" to "6"},{text:"789", text_range:"7" to "9"}]
例:
put everyMatch (<3 digits>, "123456789") --> [{text:"123", text_range:"1" to "3"},{text:"456", text_range:"4" to "6"},{text:"789", text_range:"7" to "9"}]
関連:
Occurrence, Every Occurrence 関数
挙動: occurrence と every occurrence 関数は、定義されたパターンのマッチしたテキストを返します。 occurrence 関数は最初に見つかったマッチを返し、every occurrence はソース内で見つかったすべてのマッチのリストを返します。
パラメータ
- the occurrence of pattern (必須): 角括弧内( < ... > )のパターン言語構文または変数で指定できます。パターン言語構文についての情報は、Pattern Language Syntaxを参照してください。
- in source (必須): 引用符で囲んだ文字列、変数、またはテキストを生成する表現として指定できます。
- after position (オプション): テキスト内の文字位置を指定し、その文字位置から次の文字位置でパターンマッチの検索が始まるようにします。
- before position (オプション): テキスト内の文字位置を指定する数値で、パターンマッチの検索がその文字位置の前の文字で終わるようにします。
- caseSensitivity (オプション): 標準的なケースセンシティビティフレーズ(
caseSensitive、with caseなど)を指定して、テキスト検索がケースセンシティブかどうかを決定します。デフォルト:caseInsensitive
構文:
{the} occurrence of pattern [in | within] source { [before | after] [ {position | location} position | {the} end ] } {caseSensitivity}
every match of pattern [in | within] source { [before | after] [ {position | location} position | {the} end ] } {caseSensitivity}match( pattern, source {, position {, caseSensitive {, treatPositionAsBefore }}} )
everyMatch( pattern, source {, position {, caseSensitive {, treatPositionAsBefore }}} )
SenseTalkスクリプト内では、occurrenceとinstance