在java中使用正则表达式从恢复中获取电子邮件ID

时间:2017-01-05 05:20:32

标签: java regex

我正在使用cv解析器,尝试从简历中检索值(名称,电子邮件,移动设备等)并将它们保存在csv文件中。虽然我能够检索电话号码但无法检索电子邮件ID。我正在使用下面提到的代码。

Pattern regex = Pattern.compile("[@]");
Matcher regexMatcher = regex.matcher(text);
int i = 0;
int width = 0;

while (regexMatcher.find()) {
    if ((regexMatcher.start() - 10 > 0)
            && (regexMatcher.end() + 10 < text.length())) {

        width = 10;
        String[] substr = text.substring(
            regexMatcher.start() - width,
            regexMatcher.end() + width
        ).split(" ");

        for (int j = 0; j < substr.length; j++) {
            if (substr[j].contains("@")
                && (substr[j].contains(".com")
                    || substr[j].contains("@")
                    && substr[j].contains(".co.in")
                    || substr[j].contains(".net"))) {

                System.out.println(substr[j]);
                email = substr[j];
            }
        }
    } else {
        System.out.println("NO MATCH");
    }
}

Pattern p = Pattern.compile("\\d\\d\\d([,\\s])?\\d\\d\\d\\d\\d\\d\\d");
Matcher found = p.matcher(text);

if (found.find()) {
    mobile = found.group();
    System.out.println(mobile);

} else {
    System.out.println("NO MATCH1");
}

1 个答案:

答案 0 :(得分:0)

您当前的方法似乎是找到包含符号@的字符串,然后以某种方式将其周围显示的其余电子邮件地址拼凑在一起。但这首先打败了使用正则表达式的目的。在下面的代码段中,我使用以下正则表达式来标识电子邮件地址:

\\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\b

这应该匹配大多数普通的英文电子邮件地址。我从here改编了它。

Pattern p = Pattern.compile("\\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\b");
Matcher found = p.matcher(text);
while (found.find()) {
    System.out.println(found.group(0));
}