Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中查找文件中多个电子邮件地址的正则表达式_Java_Regex_Email - Fatal编程技术网

在java中查找文件中多个电子邮件地址的正则表达式

在java中查找文件中多个电子邮件地址的正则表达式,java,regex,email,Java,Regex,Email,我有一个文件,其中有一系列的多个电子邮件地址。我需要使用java中的正则表达式将电子邮件与它分开。我已经采取了一个样本字符串,并尝试如下 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)

我有一个文件,其中有一系列的多个电子邮件地址。我需要使用java中的正则表达式将电子邮件与它分开。我已经采取了一个样本字符串,并尝试如下

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();

  }
 }
但最后,在这里,它们使用正则表达式验证多个电子邮件地址

下面的代码段来自上面的URL:

    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] 
      )?
 )*

拿其中一个为什么要使用正则表达式?用words标记并使用javax.mail.InternetAddress
 [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] 
      )?
 )*