我正在使用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");
}
答案 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));
}