Java替换附加替换字符串的所有方法,而不是替换

时间:2017-04-23 08:06:55

标签: regex string

我正在尝试将所有以元音开头的单词替换为我的文本文件中的"XXXXX"。我正在使用 RegEx 来执行此操作,但是当我尝试使用replaceAll方法替换它时,我的替换字符串会被附加而不是替换。

这是我的文本文件,代码和输出。

你好12我是约翰 你好吗 我很好 谢谢89767 0

$%^

代码:

String dest = data.replaceAll("\\b(?=[AEIOUaeiou])","XXXXX");
System.out.println(dest);

data是包含我所有文件数据的字符串。

输出:

Hello 12 XXXXXI XXXXXam Manoj
How XXXXXare you
XXXXXI XXXXXam good
Thank you 89767 0
#$%^

请帮我解决这个问题。我已经解决了一些关于replaceAll()方法的答案,但我无法找到问题的答案。

1 个答案:

答案 0 :(得分:2)

您的模式仅包含零宽度断言\\b匹配单词边界位置,(?=[AEIOUaeiou])正向前导断言元音之前的位置。

使模式消费。使用

data = data.replaceAll("\\b[AEIOUaeiou]\\w*","XXXXX");

要仅匹配字母,请将\w替换为\p{Alpha}

请参阅regex demoJava demo

String data = "Hello 12 I am John\nHow are you\nI am good\nThank you 89767 0\n#$%^";
data = data.replaceAll("\\b[AEIOUaeiou]\\p{Alpha}*","XXXXX");
System.out.println(data);

输出:

Hello 12 XXXXX XXXXX John
How XXXXX you
XXXXX XXXXX good
Thank you 89767 0
#$%^