0

我正在尝试将正则表达式查询转换为关键字查询,以便关键字查询为我提供了正则表达式查询的超集。例如

  • “主机。”可以转换为“主机
  • "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行已更正。

您可能必须在最后一个.replaceAll("sString", "")中完成 sString 。

于 2012-06-05T07:51:35.167 回答