問題タブ [re2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1946 参照

c++ - RE2 正規表現ライブラリを使用して文字列から html タグを削除する

文字列から HTML タグを削除する必要があります。

パターン削除に RE2 ライブラリを使用する場合

使用すると、Htmlタグが削除されません

html タグが削除されたのはなぜですか? ファイルから HTML タグを削除するためのより良い正規表現を提案できる人はいますか?

0 投票する
2 に答える
1216 参照

regex - RE2 および UTF16 (または UCS-2)

RE2いいですね。高速かつ決定論的。

ただし、UTF8 のみをサポートします。私の文字列はネイティブに UTF16であり、前後に変換するとパフォーマンスが低下します。

RE2 にネイティブのUTF16機能を実装するのはどれくらい難しいでしょうか?

RE2 にネイティブのUCS-2機能を実装するのはどれほど難しいでしょうか? (これはもっと簡単なはずです)

つまり、通常のプログラマーがこれを行うのに何時間必要かということです。

これは数週間私を悩ませてきたので、私は尋ねようと思いました!

0 投票する
1 に答える
2019 参照

python - pyre2 は組み込みの re モジュールよりも遅いですか?

pyre2( https://github.com/axiak/pyre2 )を使用すると、パフォーマンスの問題 (マッチング時間) が発生しました。

私は3つのプログラムを持っています:

  1. 組み込みの re モジュールを使用した純粋な Python: https://gist.github.com/1873402

  2. Pyre2 を使用した Python: https://gist.github.com/1873402。(コードの大部分は第 1 のプログラムと同じです。組み込みの re を使用する場合を除いて、utf-8 文字列を unicode にデコードします。これは pyre2 を使用する場合には必要ありません)

  3. re2 を使用した C/C++: https://gist.github.com/1873417

正規表現のプリコンパイル時間とマッチング時間の 2 つの時間を測定しました。

  • No.1 プログラム: 1.65 秒 1.25 秒

  • 第2プログラム: 0.04s 1.8s

  • 第3プログラム: 0.02s 0.8s

それらはすべて同じ正規表現と入力によって供給されます。(すべての正規表現は でサポートされていre2ます)

次に、Cython でのプロファイリングに関するドキュメントに従いました。次の結果が得られました。

_search関数 (re2.pyx:393) に時間がかかりすぎているようです。しかし、これと純粋なCバージョンとの間でどのように違いがあるのか​​ わかりません。

PS: Pyre2 リビジョン: コミット543f228

re2 リビジョン: 変更セット:79:0c439a6bd795


実際のMatch関数 (re2.pyx:424) は、この関数でほとんどの時間を費やしていると思います。

次に、 Match 関数を cdef 関数にリファクタリング_my_matchして、プロファイル結果で確認できるようにし、 cdef function へのStringPiece割り当てもリファクタリングします_alloc_sp。(変更の詳細: https://gist.github.com/1873993 ) 再プロファイリングしてから取得:

しかし、searchそれでもかなりの時間がかかります (tottime で 10.060)。

誰が問題が何であるかを理解できますか?

0 投票する
2 に答える
216 参照

c++ - 互換性のない複数のバージョンのC++ライブラリをサポートする

Googleのre2正規表現ライブラリをラップするRubyC ++拡張機能を作成しましたが、ライブラリの最近の更新により、関数のインターフェイスが次のように変更されました。Match()

に:

(新しいint endpos引数に注意してください。)

VERSION私の質問は、re2がイントロスペクトできる定数を指定していないように見えるにもかかわらず、このライブラリの両方のバージョンを1つの拡張機能でサポートすることは可能ですか?

理想的には、新しいバージョン(6つの引数を使用)を試して、失敗した場合は、古いバージョンにフォールバックできるようにしたいです(endpos引数を簡単に埋め戻すことができるため)。

現時点では、私のコードは次のようになっています。

ただし、古いバージョンのre2を使用している場合は、次のようにする必要があります。

0 投票する
3 に答える
637 参照

c++ - re2 は文字列をまったく変更しません

re2での最初の試みで、このコードをここに作成しました:

うまくいきません。s変化せず、空白のままです。最初の行を に変更しstring s = "foo";、2 行目を実行した後sは のままにし"foo"ます。

私は何を間違っていますか?

0 投票する
1 に答える
2559 参照

c++ - RE2を使用して一致する文字列のオフセットを見つけるにはどうすればよいですか?

RE2は、Googleから入手できる最新の正規表現エンジンです。現在gnuregexを使用しているプログラムでRE2を使用したい。私が抱えている問題は、何が一致するかを見つけることに関するものです。RE2が返すのは、一致した文字列です。一致したもののオフセットを知る必要があります。私の現在の計画は、RE2が返すものを取得してfindから、C++文字列でを使用することです。しかし、これは無駄に思えます。RE2のマニュアルを読みましたが、その方法がわかりません。何か案は?

0 投票する
3 に答える
712 参照

perl - re::engine::RE2 のコンパイル時の「エラー: 非 POD 要素タイプの可変長配列」

re::engine::RE2でモジュールをインストールしようとしていますcpan

ビルド時に、コンパイラは次のエラー メッセージを出力します。

どういう意味ですか?どうすれば修正できますか?2011 Macbook Air と Perl 5.12 を使用しています。

0 投票する
1 に答える
2131 参照

python - Pythonでre2の結果がreモジュールと異なるのはなぜですか?

re2を使用しようとしています。

結果:

しかし、re2の結果は異なります

結果:

  1. 新しい文字列パターンを実行するたびにre2番号1を出力するのはなぜですか?
  2. 数字の1を非表示にする方法は?
  3. re module(not found => return None)で結果が異なるのはなぜですか?

re2 バージョンは 0.2.20 です。そしてPythonは2.7です

ありがとうございました

0 投票する
1 に答える
776 参照

regex - ストリームでの RE2 正規表現?

ストリームで Google RE2 を使用することは可能ですか? 正規表現で処理すると想定される一部の入力リテラルは、メモリ内に保持するには大きすぎる可能性があります。