我正在尝试将所有以元音开头的单词替换为我的文本文件中的"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()方法的答案,但我无法找到问题的答案。
答案 0 :(得分:2)
您的模式仅包含零宽度断言:\\b
匹配单词边界位置,(?=[AEIOUaeiou])
正向前导断言元音之前的位置。
使模式消费。使用
data = data.replaceAll("\\b[AEIOUaeiou]\\w*","XXXXX");
要仅匹配字母,请将\w
替换为\p{Alpha}
。
请参阅regex demo和Java 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
#$%^