Java RegEx替换字符串中除字之外的所有字符

时间:2013-11-17 05:02:15

标签: java regex

我正在使用Java中的代码:

String word = "hithere";
String str = "123hithere12345hi";
output(str.replaceAll("(?!"+word+")", "x"));

然而,不是像我想要的那样输出:xxxhitherexxxxxxx,而是输出:x1x2x3hxixtxhxexrxex1x2x3x4x5xhxix x,我尝试了一些不同的正则表达式模式尝试这样做,但我不能似乎弄清楚如何做到这一点:(
任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

这在技术上是有效的。仅使用替换所有且仅替换一行,并假设您的字符串不包含已弃用的ASCII字符(BEL)

String string = "hithere";
String string2 = "asdfasdfasdfasdfhithereasasdf";
System.out.println(string2.replaceAll(string,"" + (char)string.length()).replaceAll("[^" + (char)string.length() + "]", "x").replaceAll("" + (char)string.length(), string));

答案 1 :(得分:0)

我认为这是你正在寻找的,如果我没有弄错的话:

String pattern = "(\\d)|(hi$)";
System.out.println("123hithere12345hi".replaceAll(pattern, "X"));

该模式取代任何数字和单词" hi"。

答案 2 :(得分:0)

这种基于环视的代码适合您:

String word = "hithere";
String string = "123hithere12345hi";
System.out.println(string.replaceAll(
               ".(?=.*?\\Q" + word + "\\E)|(?<=\\Q" + word + "\\E(.){0,99}).", "x"));
//=> xxxhitherexxxxxxx