0

キーワード クエリが正規表現クエリのスーパーセットを提供するように、正規表現クエリをキーワード クエリに変換しようとしています。例えば

  • "host. " は "host "に変換できます
  • 「host ((?10\.6\.2*)) ChuckN*」は、「host *」、「10 6 」、「Chuck」に変換できます。
  • 「host.* registered.+」は「host*」、「registered*」に変換できます。
  • "10\.64\.2*" は "10 64 *" に変換できます

このために、リーフ要素を組み合わせてキーワードクエリを取得できる正規表現ツリーを探しています。正規表現を格納するために使用される Java のパターン クラス内のデータ構造にアクセスしようとしています。どうすればよいか、または他の方法があれば教えてください。

4

1 に答える 1

0
    System.out.println(
      (     "host."
        + "\nhost ((?10\\.6\\.2*)) ChuckN*"
        + "\nhost.* registered.+" 
        + "\n10\\.64\\.2*"
      )
        .replaceAll("(.?\\*)", "*")
        .replaceAll("\\.\\+", "*")
        .replaceAll("\\\\.", " ")
        .replaceAll("(\\.?[^A-Za-z0-9 \\*\\n])", "")
    );

出力

host
host 10 6 * Chuck*
host* registered*
10 64 *

編集最後のreplaceAll行が修正されました。last .replaceAll("sString", "") で

sString を完了する必要がある場合があります。

于 2012-06-05T07:51:35.167 に答える