パターンマッチング関数

SenseTalkのパターン言語により、検索時に利用可能なパターンの定義に自然言語を用いて、テキストに対してマッチを作成できます。 以下の関数は、パターン言語の定義と一緒に使用できます。

パターン言語に関する情報は、SenseTalkのパターン言語の基本を参照してください。

MatchEvery Match関数

挙動:matchおよびevery match関数を使用して、テキスト内にパターンを設定できます。 match関数は特定のパターンの最初の出現を検出し、every match関数はソース内におけるパターンの各出現を検出します。

パラメータ:

  • the match of pattern(必須):山括弧( < ... >)内のパターン言語構文内で指定するか、または変数として指定できます。 パターン言語構文に関する情報は、パターン言語構文を参照してください。
  • in source(必須):変数内の引用文字列またはテキストを生成する式として指定できます。
  • after position(オプション):テキスト内の文字位置の番号を指定し、パターンマッチ検索が次の文字位置で始まるようにすることができます。
  • before position(オプション):テキスト内の文字位置の番号を指定し、パターンマッチ検索がその文字位置の前の文字で終わるようにすることができます。
  • caseSensitivity(オプション):標準的な大文字と小文字を区別するフレーズ(caseSensitivewith caseなど)を指定し、テキスト検索で大文字と小文字を区別するかどうかを決定します。 デフォルト:caseInsensitive

構文:

{the} match of pattern [in | within] source { [before | after] [ {position | location} position | {the} end] } {considering case | ignoring case}

every match of pattern [in | within] source { [before | after] [ {position | location} position | {the} end] } {considering case | ignoring case}

 

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つ以上のキャプチャグループが存在する場合は、マッチプロパティリストには、それらのキャプチャグループごとにプロパティのペアが含まれます。

  • nameキャプチャグループの名前。
  • name_rangeキャプチャグループが検出された範囲。

注:完全なマッチテキストは常にプロパティ名の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"))

関連:

OccurrenceEvery Occurrence関数

挙動:occurrenceおよびevery occurrence関数は、定義されたパターンにマッチしたテキストを返します。 occurrence関数は最初に検出したマッチを返し、every occurrence関数はソース内で検出した各マッチのリストを返します。

パラメータ:

  • the occurrence of pattern(必須):山括弧( < ... >)内のパターン言語構文内で指定するか、または変数として指定できます。 パターン言語構文に関する情報は、パターン言語構文を参照してください。
  • in source(必須):変数内の引用文字列またはテキストを生成する式として指定できます。
  • after position(オプション):テキスト内の文字位置の番号を指定し、パターンマッチ検索が次の文字位置で始まるようにすることができます。
  • before position(オプション):テキスト内の文字位置の番号を指定し、パターンマッチ検索がその文字位置の前の文字で終わるようにすることができます。
  • caseSensitivity(オプション):標準的な大文字と小文字を区別するフレーズ(caseSensitivewith caseなど)を指定し、テキスト検索で大文字と小文字を区別するかどうかを決定します。 デフォルト:caseInsensitive

構文:

{the} occurrence of pattern [in | within] source { [before | after] [ {position | location} position | {the} end] } {considering case | ignoring case}

every occurrence of pattern [in | within] source { [before | after] [ {position | location} position | {the} end] } {considering case | ignoring case}

 

occurrence(pattern, source {, position {, caseSensitive {, treatPositionAsBefore }}} )

everyOccurrence(pattern, source {, position {, caseSensitive {, treatPositionAsBefore }}} )

注:occurrence()またはeveryOccurrence()の従来の関数呼び出し構文を使用する場合は、最初の2つのパラメータが必須で、残りの3つはオプションとなります。 この場合のcaseSensitiveパラメータはブーリアンであり(デフォルト:False)、検索において大文字と小文字を区別するかどうかを指定します。 treatPositionAsBeforeパラメータはブーリアンであり(デフォルト:False)、positionパラメータが定める値の後ではなく前で検索を開始するかどうかを指定します。

戻り値:パターンがマッチしたテキスト(存在する場合)か、それ以外はempty。

例:

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)

例:

put occurrence of <max digits> in "Issue #429 was resolved on 15-Jun-2018" --> 429

put the range of <max digits> in "Issue #429 was resolved on 15-Jun-2018" --> 8 to 10

put every instance of <max digits> in "Issue #429 was resolved on 15-Jun-2018" after position 10 --> (15,2018)

例:

set KingQuotes to {{

Darkness cannot drive out darkness; only light can do that. Hate cannot drive out hate; only love can do that.

The ultimate measure of a man is not where he stands in moments of comfort and convenience, but where he stands at times of challenge and controversy.

Faith is taking the first step even when you don't see the whole staircase.

Our lives begin to end the day we become silent about things that matter.

Injustice anywhere is a threat to justice everywhere.

I look to a day when people will not be judged by the color of their skin, but by the content of their character.

I have decided to stick with love. Hate is too great a burden to bear.

The time is always right to do what is right.

Life's most persistent and urgent question is, "What are you doing for others?"

We must learn to live together as brothers or perish together as fools.

}}

 

set LWords to <word beginning with "L", chars, word break>

put every occurrence of LWords in KingQuotes

--> (light,love,lives,look,love,Life,learn,live)

 

set JWords to <"J" at start of a word, chars, end of word>

put every match of JWords in KingQuotes

--> ((text:"justice", text_range:"447" to "453"),(text:"judged", text_range:"507" to "512"))

関連:

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant