Java 将正则表达式查询转换为英语关键字查询

Java 将正则表达式查询转换为英语关键字查询,java,regex,reflection,tree,Java,Regex,Reflection,Tree,我正在尝试将正则表达式查询转换为关键字查询,以便关键字查询为我提供正则表达式查询的超集。比如说 “主机”。可以转换为“主机” “主机((?10\.6\.2*)ChuckN*”可以转换为“主机*,“10\.6”,“Chuck” “主机。*已注册。+”可以转换为“主机*”、“已注册*” “10\.64\.2*”可以转换为“10 64*” 为此,我正在寻找一个regex树,它的叶子元素可以组合起来得到关键字查询。我试图访问java模式类中用于存储正则表达式的数据结构。请让我知道如何做到这一点,或者

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

  • “主机”。可以转换为“主机”
  • “主机((?10\.6\.2*)ChuckN*”可以转换为“主机*,“10\.6”,“Chuck”
  • “主机。*已注册。+”可以转换为“主机*”、“已注册*”
  • “10\.64\.2*”可以转换为“10 64*”
为此,我正在寻找一个regex树,它的叶子元素可以组合起来得到关键字查询。我试图访问java模式类中用于存储正则表达式的数据结构。请让我知道如何做到这一点,或者如果有其他方法

    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 *
编辑:最后一次替换所有行已更正。

您可能必须在last.replaceAll(“sString”,“sString”)中完成sString