2017-04-23 2 views
2

母音で始まるすべての単語をテキストファイルの"XXXXX"に置き換えようとしています。私はこれを行うにはRegExを使用していますが、replaceAllメソッドで置換しようとすると、置き換えられる代わりに置換文字列が追加されています。置換する代わりに置換する文字列を追加するすべてのメソッドをJavaで置換する

ここに私のテキストファイル、コード、出力があります。

こんにちは12私は ありがとういいよあなたに をしているどのようにジョン だ89767 0

$%^

コード:

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

データが含まれている文字列をすべて見ますファイルデータ。

出力:

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

この問題を解決するために私を助けてください。 replaceAll()メソッドに関するいくつかの回答がありましたが、私の問題に対する答えを見つけることができません。 \\bはワード境界の位置と一致し、(?=[AEIOUaeiou])肯定先読みが母音の前に位置をアサート:

+0

使用 'data.replaceAll( "\\ B [AEIOUaeiou] \\ * W"、 "XXXXX");'または文字にマッチするだけで、 '\ w'を' \ p {Alpha} 'に置き換えます。 –

答えて

2

あなたのパターンは唯一ゼロ幅アサーションが含まれています。

のパターンをにする。 \p{Alpha}\wを交換する、唯一のマッチ文字に

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

を使用してください。

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 
#$%^ 
+0

は、私は、\ pを{アルファ}で試してみましたが、期待した結果 入力ファイルを取得できませんでした:12こんにちは私はあなたをどのようにジョン だ I午前良いのou%電子 ありがとう89767 0 の#$%^文字列をdest = so.replaceAll( "\\ b [AEIOUaeiou] \\ p {Alpha} *"、 "XXXXX"); \t \t System.out.println(dest); Hello 12 XXXXX XXXXX John XXXXXあなたは XXXXX XXXXXいいXXXXX%XXXXX ありがとうございます89767 0 #$%^。 –

+0

ええ、それは[これのように見える](http://ideone.com/WUc4ac)です。最後の部分( '" \\ b [AEIOUaeiou] \\ p {Alpha} * \\ b "')に '\\ b'を追加して、単語全体にのみ一致させることができます。 –

+0

@MANOJREDDY:上記で指定した文字列に期待するものを教えてください。 [多分期待される結果はここにある](https://regex101.com/r/UKaxPk/2)?次に '\ w'を' \ S'に置き換えます。 –

関連する問題