如何匹配特殊字符并替换相应的字符串?

时间:2018-02-02 18:57:45

标签: regex

学习正则表达式,我试图在我的示例中替换一些内容为@.的单词,就像电子邮件地址一样。我尝试了几种组合,但没有一种方法可行。

public class extraction {

        public static void main(String args[]){

            String outText="";
            String inText="Hello my email as me@google.com and not me@goolgle; but you can also use  me@custom-mail.com";
            outText = inText.replaceAll("/[@/\\.]", "NOTAVAILABLE");
            System.out.println(outText);

            // Expected: Hello my email as NOTAVAILABLE and not me@goolgle; but you can also use  NOTAVAILABLE

        }

    }

感谢任何建议!

1 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式进行搜索:

[^\s@]+@[^\s.]+\.\S+

并替换为"NOTAVAILABLE"字符串。

RegEx Demo

<强>代码:

str = str.replaceAll("[^\\s@]+@[^\\s.]+\\.\\S+", "NOTAVAILABLE");

<强>解释

  • [^\s@]+:匹配1个以上不是空格但不是@的字符
  • @:匹配@
  • [^\s.]+:匹配1个不是空格而不是点
  • 的字符
  • \.:匹配文字点
  • \S+:匹配1个非空格字符

Code Demo(@ctwheels提供)