Java に次の関数があります。これは、文字列コメントを受け取り、コメントを返しますが、末尾のすべての#
文字とその後ろ#
にスペースがあるすべての文字を削除し、複数の隣接するハッシュタグのシーケンス ( など) を###
単一の#
文字に置き換えます。これはコード部分です
private static String replaceHashTagsAndPunctuation(String comment) {
// Remove trailing '#' values
comment = comment.replaceAll("#*$", "");
// Replace instances of multiple '#' values with one '#'
comment = comment.replaceAll("#+", "#");
// Remove punctuation
comment = comment.replaceAll("[^a-zA-Z0-9 #]", "");
// Remove all hashtags that have no word after them
comment = comment.replaceAll("# ", "");
return comment;
}
これは信じられないほど冗長で醜いです。だから私の質問は次のとおりです。
より良い正規表現ステートメントを使用してこれを書き直して、文字列のこれらの部分をすべて1行または2行で削除するにはどうすればよいですか?
また、あなたが提案した正規表現コードが機能する理由についての説明は、Java で正規表現がどのように機能するかをよりよく理解するのに役立ちます。