|
フリーの ECMAScript インタプリタ。
Java で記述された JavaScript インタプリタ。 |
RegExp 拡張は対話式インタプリタでは CLASSPATH 上に
パッケージ com.oroinc.text.regex があれば読み込まれます。
この拡張は、Netscape による最新版の JavaScript と同様の、
正規表現に基づく検索と置換の機構を提供します。
これは Netscape の機能のサブセットです。というのは、Netscape 版では
互換性のない拡張を ECMAScript の文法に追加しており、また、マルチスレッドを
サポートするように拡張できないからです。
この拡張は OROMatcher パッケージを
基にしているため、その機能の詳しい点はこのライブラリに依存し、
Perl 5 と高い互換性をもっています。正規表現の文法と意味について詳しくは、
ORO の
ドキュメンテーションが参考になります。
OROINC は利用できないことも多いのですが、Perl 5 の正規表現についての
ドキュメントでも十分役立つはずです。
正規表現は RegExp コンストラクタで生成され、
RegExp 自体の関数でも選んだ String の関数でも
利用できます。
OptionalRegExp 拡張
あなたの環境でクラスパスに OROMatcher がない場合でも、利用できるなら
ユーザーには機能を提供したいときは、メインプログラムで、
Fesi.Extension.ORORegExp のかわりに Fesi.Extensions.OptionalRegExp を
読み込むこともできます。こうすると、読込みの時点ではなく
実行時にスクリプトが RegExp オブジェクトを生成しようとした時点で
エラーが発生します。これは本パッケージ同梱のインタプリタで使っている手法です。
RegExp コンストラクタ
RegExp コンストラクタはテキスト表現から正規表現を生成します。
正規表現は大文字と小文字を区別し 1 ヶ所の置換を行なうものとして
生成されます。書式は最初に使うまでチェックされません。
例を挙げます。
r = new RegExp("[a-z][a-z0-9]*");
/正規表現/ という書式を使って正規表現を生成することはできません。
RegExp オブジェクト
RegExp コンストラクタで生成されたオブジェクトは、その正規表現に関する
大文字と小文字を区別の有無や置き換えのモードといったいくつかの属性を保持します。
認識される属性は以下の通りです。
-
global
-
true の場合は replace 関数で全体 (複数) の置換を行ないます。
デフォルトでは false です。
-
ignoreCase
-
true の場合は大文字と小文字の違いを無視します。デフォルトでは false です。
属性はいつでも変更できます。正規表現は必要に応じて自動的に再コンパイルされます。
このため compile ルーチンはありません。
正規表現オブジェクトでは以下のルーチンが定義されています。
-
exec("文字列")
-
文字列上をこの正規表現で照合します。
null または結果の配列 (後述) を返します。
-
test("文字列")
-
文字列上をこの正規表現で照合し、true か false を
返します (exec より高速です)。
String の追加ルーチン
以下の String ルーチンが追加ないし強化されます。
-
match(正規表現)
-
この文字列上を正規表現で照合します。
null または結果の配列 (後述) を返します。
-
replace(正規表現, 置換文字列)
-
正規表現が出現する最初の 1 ヶ所 (デフォルト) あるいは
すべて (global が true の場合) を、
置換文字列で置き換え、変数 $n を推定します。
-
search(正規表現)
-
この文字列上を正規表現で照合します。
見つからなければ -1 を、見つかれば一致箇所の開始位置のインデックスを返します。
match より高速です。
-
split(正規表現[, 上限])
-
文字列を正規表現の位置で分割し、最大で「上限」個 (デフォルトでは
すべて) の部分文字列を返します。引数が正規表現ではない場合には
デフォルトの split の動作が使われます。
結果の配列
いくつかのルーチンでは結果の配列が返されます。この配列はプロパティと
配列要素である文字列の両方を持っています。プロパティは以下の通りです。
-
index
-
一致箇所の開始位置のインデックス。
-
input
-
一致した文字列。
この配列の要素は一致箇所数の後に部分一致 (括弧で囲まれた部分) を
置いたものです。
ひとつも一致しなければ、null (false としてテストできます) が
返されます。
メインページに戻る
最終更新日 (原文): 1998 年 3 月 6 日
(翻訳): 1999 年 4 月 1 日