移動先 先頭, , , 末尾 セクション, 目次.

Beyond POSIX

このセクションは完成していないが、 幾つかの興味深い、非標準なRXの機能に対するポインターを集めている。

New Regexp Operators

RXは、幾つかの一般的でない正規表現構文をサポートしている。

[[:cut N:]]pmatch[0].final_tag をNに設定し、マッチン グを即座に停止させる。Nが0であればマッチ全体が失敗し、それ以外なら成功 する。

[[:(:]] ... [[:):]]\( ... \) に似ているが、pmatchエン トリを変更することがなく、マッチした部分式が括弧つき部分式の数に含めら れない点が異なっている。

[[:(:]] ... [[:):]] は、正規表現の解析に関する括弧の機能は使いた いが部分式の場所に関する情報は必要ないようなときに使うことができる。

[[:(:]] ... [[:):]]を使う理由が二つある:

1. regexec will run faster. regexがより高速に実行される。

現時点では、八個の後方参照可能な部分式 \1 .. \9 だけがサポートさ れている(訳注: 九個ではないの?)。[[:(:]] ... [[:):]] を使うこと は、たくさんの括弧がある式において後方参照可能な部分式を節約する方法で ある。

New POSIX Functions

regncompregnexecregcompregexec の (非標準の)一般化である。

Tuning POSIX performance

二つのミステリアスなパラメータを、性能と使用メモリのトレードオフのため に使うことができる。

コンパイル時においては、その二つとは RX_DEFAULT_DFA_CACHE_SIZERX_DEFAULT_NFA_DELAYである。

もしこれらをいじくりまわしたいのなら(そうしないことをお奨めしておくけれ ども)、あなたのアプリケーションやメモリ状況を良く調べることをお奨めする。 二つのパラメータを修正して、あなたが想定する典型的な正規表現の作業負荷で の結果を試験する。

以下の対応する変数をいじることによって、これらのパラメータを 実行時(正規表現関数のいずれかを呼び出す前)に設定することが可能である:

rx_default_cache->bytes_allowed

rx_basic_unfaniverse_delay

POSIX stream-style interface

rx_make_solutions, rx_next_solution, rx_free_solutions は、もう一つの低水準POSIX関数である。これらの関数を使うことでコンパイル 済み正規表現とメモリの中で連続していない文字列や、一時に全体がメモリに 収まらないような文字列を比較することができる。

rxposix.cにあるそのコードは、それらの関数をどのように使うかを説明してい る。

DFAs Directly

あなたが興味を持っているのが純粋な正規表現(pmatchデータもなく、後方参照 もなく、数え上げ部分式(counted subexression)もない)のみであるのなら、 rx_parseを使って正規表現を解析し、その結果を rx_unfaを使 ってnfaへ変換し、さらにrx_init_system, rx_advance_to_final, rx_terminate_system を使ってdfaを実行することができる。`rgx.c' にあるdfa手法のプリミティブ(primitive)はちょっとしたガイドになるかもし れない。


移動先 先頭, , , 末尾 セクション, 目次.