用正则表达式替换Java
我从用户处获得以下输入:用正则表达式替换Java,java,regex,replaceall,Java,Regex,Replaceall,我从用户处获得以下输入: *.*.*.* (*=审查员) 这个字符串是来自用户的输入,这是用户想要检查的内容。如何将其转换为正则表达式? 编辑:让我再解释一遍。用户想要审查*点之间的任何内容,所以他键入*.*.*,我需要将其转换为正则表达式。他也会打字 我尝试过: String strLine = "93.38.31.43 and 39.53.19.33 and lala.lala.lala.lala"; String input = "*.*.*.*"; String replaceWord
*.*.*.*
(*=审查员)
这个字符串是来自用户的输入,这是用户想要检查的内容。如何将其转换为正则表达式?
编辑:让我再解释一遍。用户想要审查*点之间的任何内容,所以他键入*.*.*
,我需要将其转换为正则表达式。他也会打字
我尝试过:
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+替换*以获得此输出:
知识产权是[审查员]和[审查员]和[审查员]
但它不起作用,不能代替任何东西
当我这样做时,它会起作用:
strLine = strLine.replaceAll("?<=\\s+)\\S*" +"\\w+\\.\\w+\\.\\w+\\.\\w+"+"(?\\s+)\\S*",replaceWord);
strLine=strLine.replaceAll(“?您可以使用:
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转义字符串!)你复制了你的代码并粘贴到这里了吗?因为你在replaceWord
中拼写错误,你输入了w
而不是e
什么意思?*
有什么意思吗?是数字吗?除了空格以外有什么吗?有文件名globs,但这个输入不是文件名。你应该教育用户正确的使用方法正则表达式或为其提供某种构造函数。*..*.*.*.*.
看起来像是自创的类似正则表达式的语言。您应该遵守标准。让我解释一下。用户现在想检查点之间的任何内容,所以他键入了。*.*.*.*.*,我需要将其转换为正则表达式。他可以键入text*text-toinput=input.replace(“*”,“\\w+”).replace(“.”,“\\\”)给我一个错误。@Tom一个错误。哇。错误消息的内容是一个秘密?我修复了它,在特殊字符之前添加\\并使用replaceAllYes,我知道,很奇怪。我正在使用Eclipse,除非我在input.replaceAlls(\\\\*”,“\\\\\\\\\”,replaceAlls(\\”,“,”之前添加\\\\\\“.”;
使用正则表达式替换和input=input.replace(“*”,“\\w+”)。replace(“.”,“\\”);
只执行字符串替换。两者都可以工作。