Java 用正则表达式替换所有

Java replaceAll with regex

我有来自用户的输入:

*.*.*.*

(* = 审查员) 这个字符串是用户的输入,这就是用户想要审查的内容。我如何将其转换为正则表达式? 编辑:让我再解释一下。用户想要审查点之间 * 中的任何内容,因此他输入 *.*.*.*,我需要将其转换为正则表达式。他也可以输入 text*text

我试过:

String strLine = "93.38.31.43 and 39.53.19.33 and lala.lala.lala.lala";
String input = "*.*.*.*";
String replaceWord = "[censor]";
input = input.replaceAll("\*","\\\w+");
strLine = strLine.replaceAll("(?=\s+)\S*)" + input + "(?=\s+)\S*",replaceWord);

我尝试用 \\w+ 替换 * 以获得此输出:

the ip's are [censor] and [censor] and [censor]

但它不起作用,不能替代任何东西。

当我这样做时,它起作用了:

strLine = strLine.replaceAll("?<=\s+)\S*" +"\w+\.\w+\.\w+\.\w+"+"(?\s+)\S*",replaceWord);

为什么不起作用?有更好的方法吗?

您可以使用:

String strLine = "93.38.31.43 and 39.53.19.33 and lala.lala.lala.lala";
String input = "*.*.*.*";
String replaceWord = "[censor]";

input = input.replace("*","\w+").replace(".", "\.");
System.out.println(input); // \w+\.\w+\.\w+\.\w+

strLine = strLine.replaceAll("\b" + input + "\b", replaceWord);
System.out.println(strLine);
//=> [censor] and [censor] and [censor]