|
|
rex(1)
名前
rex-オフ・ラインの正規表現コンパイラおよびテスタ
形式
コンパイル:
rex pattern_file C_file
テスト:
rex pattern [file . . . ]
機能説明
引数なしで起動する場合、rex は、標準入力から正規表現を読み取り、初期化した文字配列を標準出力に書き込みます。通常、出力は C プログラムにインクルードされます。これにより、実行時間およびプログラムのサイズの両方を節約できます。コマンド rex は、標準入力 (通常は入力ファイルから切り換えられる) での正規表現をコンパイルし、出力を標準出力 (通常は出力ファイルに切り換える) に書き込みます。
入力ファイルにはいくつかのパターンがあります。各形式は次のようになります。
name string [string . . .]
ここでの name は、出力の配列に使用する C の名前です。string は正規表現で、二重引用符で囲まれます。複数の string が name の後にくる場合、それらは、1 つの string に連結されます。(複数の string は、厳密には、フォーマット上の都合です)。パターンに二重引用符がある場合、それらの前にはバック・スラッシュが必要です。
出力は、C のプログラムにインクルードされるかまたはコンパイルされ、後でロードされます。rex 出力を使用する C プログラムでは、rematch(abc,line,0) は、名前が abc である正規表現を line に適用します。
次は、サンプルの入力ファイルです。
cname "[a-zA-Z_][a-(3c)-Z0-9_]*"
tn "\\\\(([0-9]{3})$0\\\\)"
"([0-9]{3})$1"
"-"
"([0-9]{4})$2"
これに対応する出力は、次のようになります。
/* pattern: "[a-aA-Z_][a-zA-Z0-9_]*" */
char cname[] = {
040,0,0206,012,0,0210,0141,0172,0210,0101,0132,0137,
... };
/* pattern: "\\\\(([0-9]{3})$0\\\\)([0-9]{3})$1-([0-9]{4})$2" */
char tn[] = {
063,0,050,0202,0225,013,0,03,0206,06,0,0210,060,071,
... };
rexに 1 つあるいは複数の引数を指定して起動することにより、テストするデータをパターンと突き合わせることができます。1 番目の引数は、残りの引数で指定される名前のファイルの各行に適用するパターン (正規表現)として扱われます。ファイル名の引数が指定されない場合、標準入力が使用されます。特殊なファイル名、- は、標準入力を指す引数として使用されます。
一致するテキストがある場合、一致したものを含む行が出力され、行の一致した部分に下線が引かれます。さらに、指定されたサブ・パターン用に抽出したすべてのテキストが、別の行に出力されます。
次にコマンド rex の使用例を示します。
rex '(^|)([0-9]+)$0(|$)'
入力は次のとおりです。
... or 200 programmers in one week.
This sentense has 3 erors.
I need 12 bad men.
出力は次のとおりです。
... or 200 programmers in one week.
-----
$0 = `200'
This sentense has 3 erors.
---
$0 = `3'
I need 12 bad men.
----
$0 = `12'
診断
エラーは、ファイル・オープン・エラー、引数エラーなどですが、改めて説明するまでもありません。
関連項目
tpsubscribe(3c) の正規表現の情報
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|