Java 用正则表达式替换全部

标签 java regex replaceall

我收到了用户的输入:

*.*.*.*

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

我尝试过这样做:

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]

关于Java 用正则表达式替换全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29093432/

相关文章:

java - 在 UserDetailsS​​ervice 中使用 @Cacheable 时清空编码密码

python - 使用正则表达式查找不包含某些信息的 URL

regex - 使用 sed/regex 进行 bash 字符串操作

java - 替换正则表达式变量

Java替换匹配的正则表达式

java - GWT GoogleMaps 使用样式隐藏默认图层

java - 使用 jQplot 实现图表

java - Facelet 不传递来自 <h :inputText> 的信息

javascript - JS 字符串中的行尾(也称为换行符)

java - 从字符串中删除标点符号