如何排除' @'在正则表达式中

时间:2016-02-15 19:23:25

标签: java regex

我有一个与正则表达式相关的问题,我想要排除一个字符,但我不知道如何。

这是代码:

import java.util.ArrayList;
import java.util.List;
import java.util.regex.*;

class ExtractDemo {
public static void main(String[] args) {
    String input = "From foo@gmail.com Fri Jan 5 09:14:16 2016";

    Pattern p = Pattern.compile("@.*?\\s");
    Matcher m = p.matcher(input);


    while (m.find()) {
        System.out.println("Found a " + m.group() + ".");
    }
}

}

输出是' @ gmail.com'但是我想删除' @'。所以输出将是' gmail.com'

我尝试过表达式:(" [^ @]。*?\ s")但它不起作用:(

提前致谢

1 个答案:

答案 0 :(得分:2)

我想写正则表达式:

public static void main(String[] args) {
    String input = "From foo@gmail.com Fri Jan 5 09:14:16 2016";

    Pattern p = Pattern.compile("(?<=@)(\\w+(\\.\\w+)+)");
    Matcher m = p.matcher(input);

    while (m.find()) {
        System.out.println("Found a " + m.group(1) + ".");
    }
}

我在非捕获区域中检查@,因此最终输出仅捕获gmail.com但不捕获gmail..com