次の文字列があるとします
"@apple @banna @? example@test.com"
今、私はそれを作りたいです
"apple banna ? example@test.com"
メールアドレスに影響を与えずに「@」記号を削除するには、どのような正規表現を使用すればよいですか?
これでうまくいくと思います。
str = str.replaceAll("(?<!\S)@(?=\S+)");
これが何をするかは次のとおりです。
(?<!\S) // Checks to make sure that the @ is preceded by a whitespace
// character, or is the beginning of the string. This exists to make sure we're not in an email.
@ // Literal @
(?=\S+) // Makes sure that something besides whitespace follows.
ここにいくつかの簡単なテストがあります: http://fiddle.re/2vmt
この質問は、最初の投稿から大幅に変更されました。私の最初の答えは、最初に提起された質問に対しては正しいですが、もはや正しくありません。
このコードはそれを行います:
String noStrayAts = input.replaceAll("(?<=\\s)@", "");
参考までに、これが私の以前の回答です。
入力と出力の両方が文字列であり、削除されるものは正規表現を必要としないため、次のものが必要です。
String noAts = input.replace("@", "");
String fruit = fruit.replaceAll("@", " ");
これを行う1つの方法は次のとおりです。
str.replaceAll("@apple", "apple");
str.replaceAll("@banna", "banna");
str.replaceAll("@?", "?");