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*”
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