問題タブ [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.
python - Pythonからre2を使用することは可能ですか?
私はちょうどhttp://code.google.com/p/re2を発見しました。これは、長い間無視されてきた方法(Thompson NFA)を使用して、awkの利用可能なエンジンよりも数桁高速な正規表現エンジンを実装する有望なライブラリです。 、Perl、またはPython。
だから私はコードをダウンロードしていつものsudo make install
ことをしました。/usr/local/include/re2/re2.h
しかし、そのアクションは、私のシステムに追加するだけのように見えました。*.a
さらにファイルがあるようですが、この*.a
拡張子はどうなっているのでしょうか。
Python(できればPython 3.1)のre2を使用したいのですmake_unicode_groups.py
が、ディストリビューションのようなファイルを見ることに興奮していました(おそらくビルドプロセス中に使用されただけですか?)。ただし、それらは私のマシンにはデプロイされませんでした。
Pythonからre2を使用するにはどうすればよいですか?
更新ctypes
2人の友好的な人々は、私がソースからDLL / * .soファイルを構築し、Pythonのライブラリを使用してそれらにアクセスすることを試みることができると指摘しました。誰かがそれを行う方法を役立つ指針を与えることができますか?私はここでは、特に最初の部分(* .soファイルの作成)についてはほとんど無知です。
更新私はまた、この質問(以前)をre2開発者グループに投稿しましたが、これまでは返信なしで(これは小さなグループです)、今日は(やや人口の多い)comp.lang.pyグループに投稿しました[—スレッドはこちら—]。さまざまな場所の人々が互いに連絡を取り合うことができることを願っています。私の推測では、熟練した人は、20%のyour-free-time-belongs-google-tooタイムスライスの間に数時間でこれを行うことができます。それは私を何週間も縛ります。Pythonが接続できるようにする必要があるCのフレーバーにC++を自動的にダムダウンするツールはありますか?そうすれば、実行可能な結果を得ることが、巧妙なツールチェーンに還元される可能性があります。
(暴言)なぜこれがそんなに難しいのですか?2010年には、まだ豊富なソフトウェアを相互に通信させることはできないと考えています。これは非常に障害であるため、PythonのCコードをアドレス指定する場合は、常にこれらのリンクビットを削除する必要があります。これには多くの作業が必要ですが、CコードのバージョンとPythonのバージョンに固有の拡張モジュールしか提供されないため、古くなります。(/ rant) このようなものを別々のプロセスで実行することは可能でしょうか(たとえば、入ってくるデータの結果を生成できるre2実行可能ファイルがある場合はどうsubprocess/Popen/communicate()
でしょうか。(これは、必要になるたびにプロセスを開く必要がある純粋なコマンドラインツールではなく、継続的に実行される単一のプロセスである必要があります。このようなCコードを「悪魔化」するラッパーが存在する可能性があります)。
c++ - オートマタベースのre2の代替品
作成しているC++プログラムに正規表現を実装する必要があり、re2を使用したかったのですが、Windowsでコンパイルできませんでした。Windowsで簡単にコンパイルでき、「バックトラッキング」正規表現エンジンではなく、re2のようなオートマトン理論ベースの正規表現ライブラリ(それが意味するものは何でも)である別の正規表現ライブラリまたはそれが呼ばれるものを知っている人はいますか?
または、Windowsでre2をコンパイルする方法を理解するだけでも完璧です。
regex - RE2 はどこでダウンロードできますか?
私は正規表現を必要とする .net、C++ を使用するプロジェクトに取り組んでいます。正規表現エンジンを自分で書きたくありません。パフォーマンスが私にとって非常に重要であることに加えて、Google の RE2 がほぼ最速であることがわかりました。しかし、「code.google.com/p/re2/」を開くことができません:(どこでダウンロードできるか教えていただけますか?検索していますが、すべての参照が「code.google.com/」に戻ってきますp/re2/".TNX
c++ - Google re2 namedcapture、C ++で結果を解析する方法は?
正規表現にGoogle re2ライブラリを使用していますが、結果を解析する方法がどこにも見つかりませんでした!
これは短い例です
flickr のみが一致したことを知るにはどうすればよいですか?
ありがとうございました、
フランチェスコ
--- さらにテストを行った後、namedcapture の解決策が見つかりませんでした。抽出されたテキストを取得できる唯一の方法はこれです。
-------- これにより、出力が得られます。
res = 1 arg[0] = こんにちは。クレイジーワールド arg[1] = こんにちは。arg[2] = クレイジー arg[3] = 世界 arg[4] =
一致する文字列の 2 番目の部分でテストするには...
--- 私は出力として取得します:
foudn res = 1 arg[0] = arg[1] = arg[2] = arg[3] = arg[4] = 世界
私の問題は、名前のキャプチャ-> a <---が出てこないことであり、出力をクリアする必要があります(区別されない一致の場合は小文字、追加された互換性のある文字から削除されます..)、マップに対して再度処理する必要があります。このプレグの値の代わりにキーを提供する名前付きキャプチャはありません
c++ - Windows用のGoogleRE2を構築する方法は?
Windows用のGoogleRE2を構築する方法は?誰かが試しましたか?
ruby - 名前付きキャプチャ グループは RE2 正規表現でどのように使用されますか?
このページhttp://swtch.com/~rsc/regexp/regexp3.htmlでは、RE2 が名前付き式をサポートしていると書かれています。
RE2 は、Python スタイルの名前付き captures をサポートしていますが、.NET および Perlで使用される
(?P<name>expr)
代替構文はサポートしていません。(?<name>expr)
(?'name'expr)
しかし、名前が一致するものにアクセスできないため、無駄な実装のようです。何か不足していますか?
java - Java用のRE2のような正規表現ライブラリは存在しますか?
Google の正規表現ライブラリ RE2 の Java バージョン、または同様の機能と優れたパフォーマンスを備えた Java ライブラリに出くわした人はいますか? パフォーマンス要件は、正規表現の長さと入力テキストの長さに関して線形時間です。
明確化
ほとんどの正規表現の実装では、バックトラッキング アルゴリズムを使用して入力テキストを照合するため、 のようないくつかの単純な正規表現では指数関数的(.*).(.*).(.*).(.*)
です。RE2 は、Automata 理論の概念を使用して入力サイズに比例して変化するアルゴリズムを使用して、この問題を解決する Google のライブラリです。質問者は、このアルゴリズムに基づいた Java 用のライブラリが存在するかどうかを知りたがっています。
regex - Google re2ライブラリの場合、longest_matchはどういう意味ですか?
Googleのre2ライブラリでlongest_matchオプションが何をするのか理解できません。
正しくない説明:
に適用
/a*/
する場合、longest-matchを設定すると、Kleeneクロージャが貪欲になり、正規表現が空の文字列ではなく"aaaaa"
文字列全体と一致するようになります。"aaaaa"
""
に適用
/a*/
する場合、longest-matchを設定すると、左端の一致(インデックス0から開始)ではなく"abaa"
、最も長い一致(インデックス2から開始)に正規表現が一致します。"aa"
"a"
これについて話し合っている人をインターネット上で見つけることができませんでした。これは、私だけが混乱していることを示唆しています。誰かが私を助けることができますか?
c++ - re2ライブラリの読み込み
私はグーグルのRE2ライブラリをテストするために次のコードを使用しています
次のコマンドを使用してコンパイルしています-
正常にコンパイルされていますが、。/ retestを使用して再テストを実行しようとすると、次のエラーがスローされます-
チェックしたところ、libre2.so.0ライブラリがuser / local/libディレクトリとre2/obj/soディレクトリに存在します。では、なぜこのエラーが発生するのでしょうか。追加する詳細を忘れているのでしょうか。
c++ - C++ での複雑な const 宣言
私は C++、特に Google RE2 ライブラリに初めて足を踏み入れましたが、いくつかの構文に行き詰まっています。シグネチャを使用して関数を呼び出そうとしています:
コードで:
ただし、コンパイラ エラーが発生します。
明らかに 3 番目の引数のデータ型が間違っていますが、正しいデータ型を知っている人はいますか?
Visual Studio 2010 でコードをコンパイルしています