簡體   English   中英

正則表達式可在Java文件中查找多個電子郵件地址

[英]Regular Expression to find multiple email addresses in a file in java

我有一個文件,其中包含一系列多個電子郵件地址。 我需要使用Java中的Regex將電子郵件與其分開。 我采取了一個示例字符串,並嘗試如下所示。

import java.util.HashSet;
import java.util.Set;
import java.io.*;
import java.util.*;
import java.util.regex.*;



public class Email2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String content = "s.lokesh1729@gmail.com,lokesh.harshitha1729@gmail.com";
        Pattern p = Pattern.compile("^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
                + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
        Matcher m = p.matcher(content);
        if(m.find())
        {
            System.out.println(m.group(1));
            System.out.println(m.group(2));
        }
    }

}

上面的代碼不返回任何內容,但是如果我將內容更改為僅包含一個電子郵件地址,它將返回。 我知道我可以用逗號或任何其他特殊字符來分割它,但是我想用正則表達式來分割嗎?

您可以在內容中拆分電子郵件地址,如下所示:

String string = "s.lokesh1729@gmail.com,lokesh.harshitha1729@gmail.com";
String[] array= string.split(",");
String array= array[0]; // s.lokesh1729@gmail.com
String array= array[1]; // lokesh.harshitha1729@gmail.com

然后,您可以根據以下表達式測試您的電子郵件:

 String REGEX = "([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})";

在這里,您可以查看他們的評估方式如何使用正則表達式驗證電子郵件地址

下面的摘錄來自上面的URL。

 EmailValidator.java

  package com.mkyong.regex;

  import java.util.regex.Matcher;
  import java.util.regex.Pattern;

  public class EmailValidator {

  private Pattern pattern;
  private Matcher matcher;

private static final String EMAIL_PATTERN = 
    "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
    + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

public EmailValidator() {
    pattern = Pattern.compile(EMAIL_PATTERN);
}

/**
 * Validate hex with regular expression
 * 
 * @param hex
 *            hex for validation
 * @return true valid hex, false invalid hex
 */
public boolean validate(final String hex) {

    matcher = pattern.matcher(hex);
    return matcher.matches();

  }
 }

但是最后,他們在這里使用正則表達式驗證多個電子郵件地址如何在Java中使用正則表達式驗證多個電子郵件地址

以下摘錄來自上方的網址:

    public static boolean isValid(String email) {
    System.out.println(email + " >>>>>>>> is Valid? " + Pattern.matches(regex, email));
    return Pattern.matches(regex, email);
}

不確定是否使用Java,但您必須坐在while循環中尋找所有
電子郵件。

類似while( search( Rx, string ) ) { ... }

這是一個很好的正則表達式從這里

"[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*"  

格式:

 [a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+ 
 @
 [a-zA-Z0-9] 
 (?:
      [a-zA-Z0-9-]{0,61} 
      [a-zA-Z0-9] 
 )?
 (?:
      \. 
      [a-zA-Z0-9] 
      (?:
           [a-zA-Z0-9-]{0,61} 
           [a-zA-Z0-9] 
      )?
 )*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM