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