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

时间:2012-06-05 01:51:38

标签: java regex reflection tree

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

  • “host。”可以转换为“主机
  • “host((?10 \ .6 \ .2 *))ChuckN *”可以转换为“host *”,“10 6 ”,“Chuck
  • “host。* registered。+”可以转换为“host *”,“registered *”
  • “10 \ .64 \ .2 *”可以转换为“10 64 *”

为此,我正在寻找一个正则表达式树,其叶元素可以组合以获取关键字查询。我试图访问用于存储正则表达式的java中的模式类内部的数据结构。请告诉我如何做到这一点或是否有其他方式。

1 个答案:

答案 0 :(得分: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(“sString”,“”)中完成sString。