2

通常、人々は正規表現を使用して他の何かをASTに解析します。私が探しているのは、正規表現自体をASTに解析するために使用できるツールであり、それをシンボリックに操作できます。私が次のような正規表現を持っているとしましょう

(c(o)w)/(.*?)/omg

のような質問ができるようになりたい

  • キャプチャグループはいくつありますか?
  • ネストされたグループはありますか?
  • .キャプチャグループの開始時に、正規表現の10番目のキャラクターであるキャラクターはいますか?

そして、いくつかの意味のある方法で正規表現を操作できるようになります。例:

  • 名前付きグループすべての名前を取得する
  • すべての名前付きグループを名前なしグループに置き換えます
  • ネストされたグループを最も外側の囲んでいるグループにフラット化します

文字列にシリアル化する前に。

私はあちこち探しましjava.util.regex.Patternたが、内部はすべてプライベートなので、それらにアクセスすることはできません。これを行うために使用できるサードパーティのライブラリはありますか?

4

2 に答える 2

4

ANTLRを使用して、正規表現のレクサー/パーサーを作成します。使用する正規表現構文の量によっては、これはかなり複雑になる可能性があります。Antlrには、作成している文法ファイルをテストできる優れたグラフィカルエディターが付属しています。結果として得られるASTは、標準のJavaプログラムで非常に簡単に操作できます。Antlrを初めて使用する場合は、TerenceのAntlr本を強くお勧めします。

于 2013-01-21T23:29:58.250 に答える
3

私のANTLRベースのPCREパーサーを見てください:https ://github.com/bkiers/PCREParser

于 2013-01-22T17:09:03.700 に答える