用于前缀@的字符串的Java正则表达式

时间:2012-12-26 22:11:23

标签: java regex

说我有以下字符串

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

现在我想成功

"apple banna ? example@test.com"

我的正则表达式应该是删除“@”符号而不影响电子邮件地址?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

此问题自最初发布以来发生了重大变化。我的原始答案,虽然对于最初提出的问题是正确的,但不再正确。

此代码将执行此操作:

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

Fyi,这是我之前的回答:

由于输入和输出都是字符串,并且被删除的东西不需要正则表达式,您只需要:

String noAts = input.replace("@", "");

答案 2 :(得分:0)

String fruit = fruit.replaceAll("@", " ");

答案 3 :(得分:-1)

这样做的一种方法如下:

str.replaceAll("@apple", "apple"); 
str.replaceAll("@banna", "banna"); 
str.replaceAll("@?", "?");