2017-01-05 13 views
1

履歴書から値(名前、電子メール、モバイルなど)を取得して、csvファイルに保存しようとしているcvパーサーに取り組んでいます。電話番号は取得できましたが、メールIDを取得できませんでした。私は下記のコードを使用しています。Javaのregexを使用して電子メール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

あなたの現在のアプローチは、シンボル@に含む文字列を検索することが表示され、その後、何とかその周りに表示される電子メールアドレスの残りの部分をつなぎ合わせます。しかし、これは最初のところ正規表現を使用する目的に反するものです。以下のコードでは、私は、電子メールアドレスを識別するために、次の正規表現を使用します。

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

これは、ほとんどの通常の英語の電子メールアドレスと一致する必要があります。私はそれをhereから適合させました。

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

ありがとうございます。 – sairam

関連する問題