-1

次の文字列があるとします

"@apple @banna @? example@test.com"

今、私はそれを作りたいです

"apple banna ? example@test.com"

メールアドレスに影響を与えずに「@」記号を削除するには、どのような正規表現を使用すればよいですか?

4

4 に答える 4

3

これでうまくいくと思います。

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

于 2012-12-26T23:02:29.270 に答える
2

この質問は、最初の投稿から大幅に変更されました。私の最初の答えは、最初に提起された質問に対しては正しいですが、もはや正しくありません。

このコードはそれを行います:

String noStrayAts = input.replaceAll("(?<=\\s)@", ""); 

参考までに、これが私の以前の回答です。

入力と出力の両方が文字列であり、削除されるものは正規表現を必要としないため、次のものが必要です。

String noAts = input.replace("@", "");
于 2012-12-26T22:15:37.080 に答える
0
String fruit = fruit.replaceAll("@", " ");
于 2012-12-26T22:13:28.347 に答える
-1

これを行う1つの方法は次のとおりです。

str.replaceAll("@apple", "apple"); 
str.replaceAll("@banna", "banna"); 
str.replaceAll("@?", "?");
于 2012-12-26T22:14:58.747 に答える