0

タイトルが明確でない場合は、ここに例を示します

文字列内のすべての特殊文字、特殊文字の後の単語文字、その後に空白を削除したいと考えています。

String = "Here is the world's first movie. #movie";

上記の例では、次のような出力が必要です

"Here is the world first movie movie";

これを達成するために多くの正規表現を試しましたが、できません

replaceAll("[^\\w]\\w{1}\\s", " ");

しかし、それは機能していません。説明付きでこれの正規表現を教えてください。

前もって感謝します

編集:要件は、のような特殊文字を削除したいです。また、最終出力の#movieように、単一の文字の後にスペースが続く特殊文字を削除したいです。world's favoriteworld favorite

ほとんどの場合、特殊文字の後の文字は になり's'ます。例えば world's, India's, john's

4

2 に答える 2

0

最終的に試行錯誤を重ねて動作するようになりました。最終的な正規表現文字列は[^a-zA-Z\\s]s?(\\s)?

str.replaceAll("[^a-zA-Z\\s]s?(\\s)?", "$1");

ここに説明があります、

[^a-zA-Z\\s]s?=> 空白を除くすべての特殊文字を検索し、その後に 1 または 0 を続けますs

(\\s)?=> 直後に 1 または 0 の空白が続きます。

ここでは、(\\s)becoz をグループ化して、replaceAll()関数でそれを 2 番目のパラメーターとして使用して、 as に置き換えます$1

答えは

String orig = "Here is the world's first movie. #movie";`
System.out.println(orig..replaceAll("[^a-zA-Z\\s]s?(\\s)?", "$1"));

最終出力はHere is the world first movie movie

于 2013-09-28T06:32:21.380 に答える