8

私が扱ってきたすべてのプログラミング言語では、正規表現のサポート (存在する場合) は基本的にブラック ボックスmatchですscan。彼らはそれをしている間、彼らがしていることについて報告しません。

かなり人気のあるプログラミング言語で、正規表現を照合し、何が起こっているかを示す何らかのリアルタイム出力 (たとえば、標準出力) を提供するための組み込みまたはライブラリのサポートがあるかどうか疑問に思っています。

更新:これまでのコメントに感謝します。ただし、正規表現自体の構造を表示するツールについて質問しているわけではありません。これは、debuggex.comregexper.comが行っているように見えます (ただし、これは非常に優れています)。式が入力に適用される部分で情報を提供することについて質問するつもりでした。

仮定の例を次に示します。"(foo|bar|baz)" という式があり、これを文字列 "baz" に対してテストするとします。次に、次のような出力を想像しています...

testing "foo" - nope
testing "bar" - nope
testing "baz" - found match

明らかに、そのようには見えません。しかし、あなたはその考えを理解します。

4

4 に答える 4

6

いくつかの正規表現ライブラリは、状態処理情報によって状態を取得できるように記述されています。特に、Russ Cox は正規表現に関する記事を書きました。この記事には、状態ごとに遷移するためのコードと API が含まれていました。

http://swtch.com/~rsc/regexp/regexp1.html

この記事で使用されているコードは、あなたが説明したものと同様の段階的な出力を提供するように見える完全で単純な正規表現ライブラリに拡張されました。

https://code.google.com/p/re1/

その後、コードはより完全に完成し、現在では Google が管理 (および内部で使用) する本格的な正規表現ライブラリになっています。

https://code.google.com/p/re2/

編集

ソース コードで true に設定してre2 をコンパイルするとDebugDFA、処理中に状態ごとの出力が取得されます。ただし、多くの正規表現では、実際の正規表現と 1-1 で対応しない場合があり、出力は少し難解です。

于 2013-06-14T21:11:13.700 に答える
4

Python の正規表現エンジンは、 RE.debug フラグを使用して可視性を提供します。あなたは何か違うことを求めていますが(リアルタイムのフィードバック)、私はそれが存在しないと確信しています。IDE または拡張された python シェル ( ipythonなど) に統合されていることがわかりました。私の意見では、書くのは楽しいことであり、非常に役立つでしょう。

于 2013-06-14T21:07:05.053 に答える