正規表現†
12 個の関数。
RE_SEARCH†
書式†
RE_SEARCH( string , regexp )
引数†
| Parameter | Description |
|---|---|
| string | 検索対象の文字列 |
| regexp | 正規表現パターン |
戻り値†
- 1: マッチする部分が見つかった場合
- 0: マッチしなかった場合
解説†
処理対象文字列内に正規表現とマッチする部分があるかどうかを調べます。文字列全体の完全マッチを調べる場合は RE_MATCH を使用してください。
マッチした詳細は RE_GETSTR、RE_GETPOS、RE_GETLEN で取得できます。
使用例†
if (RE_SEARCH(reference[0], 'こんに?ち[はわ]|今日[はわ]')){
"こんにちは、%(username)"
}
ユーザー入力に「こんにちは」や「こんにちわ」等が含まれていればあいさつを返す例。\![open,inputbox,OnTalk,0] でインプットボックスを開いておくと、会話っぽいものを作れる。この例は、「こんにちは」「こんにちわ」「こんちは」「こんちわ」「今日は」「今日わ」「コンニチハ」「コンニチワ」のどれかが文中に入っているとき(たとえば「こんにちはー、ほにゃらら」など)に反応する('こんに?ち[はわ]|今日[はわ]|コンニチ[ハワ]' と書いた場合)。
Tips として、次のようにすると、文末に ? か ? があるとき(たとえば「元気?」「ハンガーって美味しいよね?」など)、常に「そうかもしれない」と返すので、会話が成立しやすい(返答パターンは増やすべきだが)。
if (RE_SEARCH(reference[0], '(?|\?)$')){
"そうかもしれない"
}
互換性†
- YAYA: 初期バージョンより対応
- Tc606-6: 正規表現エンジンを uka_regexp に変更(PCRE2 に近い構文)。パターン中のサブルーチン呼び出しを変数・関数で解決できる(正規表現)
関連項目†
RE_MATCH†
書式†
RE_MATCH( string , regexp )
引数†
| Parameter | Description |
|---|---|
| string | マッチ対象の文字列 |
| regexp | 正規表現パターン |
戻り値†
- 1: 文字列全体がパターンに完全マッチした場合
- 0: マッチしなかった場合
解説†
処理対象文字列が正規表現に完全にマッチするかどうかを調べます。部分一致を調べる場合は RE_SEARCH を使用してください。
マッチした詳細は RE_GETSTR、RE_GETPOS、RE_GETLEN で取得できます。
使用例†
RE_MATCH("50kg", "(\d+) *kg")
// → 1
RE_MATCH("50cm", "(\d+) *kg")
// → 0
互換性†
- YAYA: 初期バージョンより対応
- AYA: 5.8以降
- Tc606-6: 正規表現エンジンを uka_regexp に変更(PCRE2 に近い構文)。パターン中のサブルーチン呼び出しを変数・関数で解決できる(正規表現)
関連項目†
RE_GREP†
書式†
RE_GREP( string , regexp )
引数†
| Parameter | Description |
|---|---|
| string | 処理対象の文字列 |
| regexp | マッチさせる正規表現パターン |
戻り値†
- 1以上: マッチした部分の数(マッチした場合)
- 0: マッチする部分がなかった場合
解説†
対象文字列の中から正規表現にマッチするすべての部分を検索します。詳細な結果は RE_GETSTR・RE_GETPOS・RE_GETLEN を使って取得できます。
互換性†
- YAYA: 初期リリースから使用可能
- AYA: バージョン5.8以降で使用可能
- Tc606-6: 正規表現エンジンを uka_regexp に変更(PCRE2 に近い構文)。パターン中のサブルーチン呼び出しを変数・関数で解決できる(正規表現)
関連項目†
RE_REPLACE†
書式†
RE_REPLACE( string , regexp , replace [, count] )
引数†
| Parameter | Description |
|---|---|
| string | 処理対象の文字列(数値型変数は TOSTR で文字列型に変換することを推奨) |
| regexp | 正規表現パターン |
| replace | 置換後の文字列(メタ文字は使用不可) |
| count | 置換回数(省略またはマイナス値で全置換) |
戻り値†
- 成功: 置換後の文字列
- マッチなし: 元の文字列(変更なし)
解説†
処理対象文字列内で正規表現にマッチした部分を置換します。置換文字列にメタ文字は利用できません。メタ文字を使用したい場合は RE_REPLACEEX を使用してください。
マッチした詳細は RE_GETSTR、RE_GETPOS、RE_GETLEN で取得できます。この関数を使った場合、それらは ( ) ごとの内容ではなく、対象文字列において正規表現全体にマッチしたn番目の内容を表します。
互換性†
- YAYA: 初期バージョンより対応(count パラメータは Tc548-1 以降)
- AYA: 5.8以降
- Tc606-6: 正規表現エンジンを uka_regexp に変更(PCRE2 に近い構文)。パターン中のサブルーチン呼び出しを変数・関数で解決できる(正規表現)
関連項目†
RE_REPLACEEX†
書式†
RE_REPLACEEX( string , regexp , replace_ex [, count] )
引数†
| Parameter | Description |
|---|---|
| string | 処理対象の文字列(数値型変数は TOSTR で文字列型に変換することを推奨) |
| regexp | 正規表現パターン |
| replace_ex | 置換後の文字列($0、$1 等のPerlスタイルメタ文字使用可能) |
| count | 置換回数(省略またはマイナス値で全置換) |
戻り値†
- 成功: 置換後の文字列
- 失敗: 元の string(変更なし)
解説†
処理対象文字列内で正規表現にマッチした部分を置換します。RE_REPLACE との違いは、置換文字列に $0、$1 などのPerlスタイルのメタ文字が使用できる点です。
RE_REPLACEEX を使用した場合、RE_GETSTR、RE_GETPOS、RE_GETLEN は、nグループのキャプチャではなく、正規表現パターン全体のn番目のマッチに関する情報を返します。
互換性†
- YAYA: 初期バージョンより対応(count パラメータは Tc548-1 以降)
- Tc606-6: 正規表現エンジンを uka_regexp に変更(PCRE2 に近い構文)。パターン中のサブルーチン呼び出しを変数・関数で解決できる(正規表現)
関連項目†
RE_SPLIT†
書式†
RE_SPLIT( string , regexp [, max] )
引数†
| Parameter | Description |
|---|---|
| string | 分割対象の文字列 |
| regexp | 分割に使用する正規表現パターン |
| max | 最大分割数(省略または0で全分割) |
戻り値†
- 成功: 分割された文字列を格納した汎用配列
- 失敗: 空の汎用配列
解説†
処理対象文字列を正規表現パターンで分割し、結果を汎用配列として返します。
max を指定した場合、その数で分割を打ち切り、残りの部分は最後の要素にまとめられます(RE_SPLIT('a,b,c,d', ',', 2) は a と b,c,d)。
分割結果の詳細は RE_GETSTR、RE_GETPOS、RE_GETLEN で取得できます。
互換性†
- YAYA: 初期バージョンより対応(max パラメータは Tc536-1 以降)
- Tc606-6: 正規表現エンジンを uka_regexp に変更(PCRE2 に近い構文)。パターン中のサブルーチン呼び出しを変数・関数で解決できる(正規表現)
関連項目†
RE_GETSTR†
書式†
RE_GETSTR
RE_GETSTR()
引数†
なし
戻り値†
マッチした部分文字列を格納した汎用配列。
| 要素 | 内容 |
|---|---|
| 要素0 | 正規表現全体にマッチした文字列 |
| 要素n | n番目の括弧グループにマッチした部分文字列 |
- 正規表現関数を実行していない場合やマッチした文字列がない場合は
IARRAYを返します。 RE_REPLACE・RE_REPLACEEX・RE_SPLITの場合は、個々のグループではなく正規表現全体にマッチした文字列を格納した配列を返します。
解説†
正規表現系関数の実行結果を取得します。
使用例†
RE_MATCH("x > 15.7", "x *> *([\d\.]+)")
_array = RE_GETSTR
// _array は ("x > 15.7", "15.7") になる
互換性†
- YAYA: 初期リリースから使用可能
- AYA: バージョン5.8から使用可能
関連項目†
RE_GETPOS†
書式†
RE_GETPOS
RE_GETPOS()
引数†
なし
戻り値†
正規表現内の ( ) にマッチした位置を列挙した汎用配列。
| 要素 | 内容 |
|---|---|
| 要素0 | 正規表現パターン全体がマッチした位置 |
| 要素n | n番目の括弧グループがマッチした位置 |
- 位置は先頭からの文字数(0始まり)で表されます。
- 正規表現関数を実行していない場合、またはマッチする文字列がない場合は
IARRAYを返します。 RE_REPLACE・RE_REPLACEEX・RE_SPLITの場合は、個々のグループではなく正規表現全体のマッチ位置を返します。
解説†
正規表現系関数の実行結果(マッチ位置情報)を取得します。
互換性†
- YAYA: 初期リリースから使用可能
- AYA: バージョン5.8以降で使用可能
関連項目†
RE_GETLEN†
書式†
RE_GETLEN
RE_GETLEN()
引数†
なし
戻り値†
正規表現内の ( ) にマッチした部分の長さを列挙した汎用配列。
| 要素 | 内容 |
|---|---|
| 要素0 | 正規表現全体にマッチした部分の長さ |
| 要素n | n番目の括弧グループにマッチした部分の長さ |
- 長さは文字数で計測されます。
- 正規表現関数を実行していない場合、またはマッチした文字列がない場合は
IARRAYを返します。 RE_REPLACE・RE_REPLACEEX・RE_SPLITの場合は、個々のグループではなく正規表現全体にマッチした部分の長さを返します。
解説†
正規表現系関数の実行結果を取得します。RE_GETPOS・RE_GETSTR と組み合わせて使用します。
互換性†
- YAYA: 初期リリースから使用可能
- AYA: バージョン5.8以降で使用可能
関連項目†
RE_ASEARCH†
書式†
RE_ASEARCH(key, array)
引数†
| Parameter | Description |
|---|---|
| key | 検索する正規表現パターン |
| array | 検索対象の汎用配列(簡易配列はサポートされない) |
戻り値†
- 最初にマッチした要素のインデックス(0始まり)
- マッチする要素がない場合: -1
解説†
汎用配列から、指定した正規表現に「一部でも」合致する値を検索し、最初に見つかったもののみを返します。
注意: RE_GETSTR・RE_GETPOS・RE_GETLEN は使用不可です。すべてのマッチを取得したい場合は RE_ASEARCHEX を使用してください。
使用例†
_array = ('さくら','まゆら','ねここ')
RE_ASEARCH('^ま', _array) // Returns: 1
"ま"で始まる要素を検索し、インデックス1(2番目の要素)が見つかります。
互換性†
- YAYA: バージョンTc539-1から使用可能
- Tc606-6: 正規表現エンジンを uka_regexp に変更(PCRE2 に近い構文)。パターン中のサブルーチン呼び出しを変数・関数で解決できる(正規表現)
関連項目†
RE_ASEARCHEX†
書式†
RE_ASEARCHEX( key , array )
引数†
| Parameter | Description |
|---|---|
| key | 検索する正規表現パターン |
| array | 検索対象の汎用配列(簡易配列はサポートされない) |
戻り値†
マッチした要素の序数を列挙した汎用配列(0始まり)。マッチする要素がない場合は空の配列を返す。
注意: RE_GETSTR・RE_GETPOS・RE_GETLEN は使用不可です。
解説†
汎用配列から、指定した正規表現に「一部でも」合致する値をすべて検索します。
使用例†
_tea = ("鉄観音", "烏龍", "やぶきた", "烏龍", "ジャスミン")
ipod = RE_ASEARCHEX("^烏", _tea)
// ipod は (1,3) になる("烏"で始まる要素のインデックス)
互換性†
- YAYA: 初期リリースから使用可能
- AYA: バージョン5.8以降で使用可能
- Tc606-6: 正規表現エンジンを uka_regexp に変更(PCRE2 に近い構文)。パターン中のサブルーチン呼び出しを変数・関数で解決できる(正規表現)
関連項目†
RE_OPTION†
書式†
RE_OPTION( オプション文字列 )
引数†
| Parameter | Description |
|---|---|
| オプション文字列 | 設定する Perl 互換の正規表現オプション文字列(i, s, m, x)。省略した場合は現在の設定を返す |
戻り値†
現在有効なオプションを示す文字列(i, s, m, x の組み合わせ)
解説†
Perl 互換の正規表現オプションを設定します。
対応オプション:
- i: 大文字小文字を区別しないマッチング
- m: 入力を複数行として扱う
- s: ワイルドカード(.)が改行文字にもマッチするようにする
- x: 正規表現パターン内のコメント(#)と空白を無視する
既定ではオプションなし(RE_OPTION("") でも同じ状態に戻る)。引数なしで呼ぶと、現在のオプションを文字列で返す。
オプションはパターンの中でも指定できる((?i)abc など)。詳しくは 正規表現 を参照。
互換性†
- YAYA: Tc534-1以降