Regex Java replace all方法追加替换字符串,而不是替换
我正在尝试替换文本文件中以元音开头的所有单词。我正在使用Regex Java replace all方法追加替换字符串,而不是替换,regex,string,Regex,String,我正在尝试替换文本文件中以元音开头的所有单词。我正在使用RegEx执行此操作,但当我尝试用replaceAll方法替换它时,替换字符串将被追加而不是替换 这是我的文本文件、代码和输出 你好,我是约翰 你好吗 我很好 谢谢897670 $%^ 代码: data是包含我的所有文件数据的字符串 输出: Hello 12 XXXXXI XXXXXam Manoj How XXXXXare you XXXXXI XXXXXam good Thank you 89767 0 #$%^ 请帮我解决这个问题。
RegEx
执行此操作,但当我尝试用replaceAll方法替换它时,替换字符串将被追加而不是替换
这是我的文本文件、代码和输出
你好,我是约翰
你好吗
我很好
谢谢897670
$%^
代码:
data是包含我的所有文件数据的字符串
输出:
Hello 12 XXXXXI XXXXXam Manoj
How XXXXXare you
XXXXXI XXXXXam good
Thank you 89767 0
#$%^
请帮我解决这个问题。关于replaceAll()方法,我已经找到了一些答案,但我找不到问题的答案。您的模式只包含零宽度断言:
\\b
匹配单词边界位置,(?=[AEIOUaeiou])
正向前瞻断言元音之前的位置
使图案更具消费性。使用
要仅匹配字母,请将\w
替换为\p{Alpha}
见和a:
输出:
Hello 12 XXXXX XXXXX John
How XXXXX you
XXXXX XXXXX good
Thank you 89767 0
#$%^
使用
data.replaceAll(\\b[AEIOUaeiou]\\w*,“XXXXX”)
或仅匹配字母,将\w
替换为\p{Alpha}
。我尝试过使用\p{Alpha},但无法获得预期的结果输入文件:您好12我是John您好我很好您%e谢谢89767 0$%^String dest=so.replaceAll(\\b[AEIOUaeiou]\\p{Alpha}*,“XXXXX”);系统输出打印项次(目的地);输出:你好12 XXXXX XXXXX约翰你好XXXXX你XXXXX XXXXX好XXXXX%XXXXX谢谢89767 0#$%^。是的,会的。注意:您可以在末尾添加\\b
(“\\b[AEIOUaeiou]\\p{Alpha}*\\b”
)使其仅匹配整句话。@MANOJREDDY:您能解释一下您对上面提供的字符串的期望吗?然后将\w
替换为\S
。
data = data.replaceAll("\\b[AEIOUaeiou]\\w*","XXXXX");
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
#$%^