パターンマッチング関数
SenseTalkのパターン言語では、自然言語を用いて検索に使用できるパターンを定義できます。以下の関数は、パターン言語の定義とともに使用できます。
contains
operatoris in
operatorbegins with
operatorends with
operatoroffset
,range
,every offset
,every range
functionsreplace
commanddelete
commandsplit
command,split by
functionnumber of occurrences of
function
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
という言葉は互換的に使用されます。スクリプトでoccurrence
という単語が使用されている場所では、代わりにinstance
という単語を使用することができます。
occurrence()
またはeveryOccurrence()
の伝統的な関数呼び出し構文を使用する場合、最初の2つのパラメータは必須で、残りの3つはオプションです。この場合の_caseSensitive_パラメータは、検索が大文字小文字を区別するかどうかを示すブール値(デフォルト:False
)です。_treatPositionAsBefore_パラメータはブール値(デフォルト:False
)で、検索が_position_パラメータで指定された位置の前に行われるべきかどうかを指定します。
戻り値: パターンと一致するテキスト、存在しない場合は空です。
例:
put the occurrence of <3 digits> in "1bc3 8472QX905" --> "847"
例:
put the occurrence of <"$", digits> in "$895" —> "$8"
例:
put occurrence (<"$", digits>, "$895") —> "$8"
例:
put every occurrence of <3 digits> in "123456789" --> [123,456,789]