📜  读取给定文件中存在的所有电子邮件的Java程序

📅  最后修改于: 2021-09-04 13:12:58             🧑  作者: Mango

给定一个包含一些与其他数据混合的电子邮件 ID 的input.txt文件。任务是逐行读取此输入文件,如果在该行中找到任何电子邮件 ID,则将该电子邮件 ID 写入另一个文件,即output.txt

例子:

方法:要检测该文件中的电子邮件 ID,一个简单的解决方案是正则表达式。首先,我们必须为电子邮件 ID 形成一个正则表达式。每当 input.txt 文件中的任何字符串与我们为电子邮件 ID 形成的正则表达式匹配时,匹配的字符串将被写入 output.txt 文件。

如果该字符串遵循以下标准,则该字符串被称为电子邮件 ID:

  • 第一个字符可以是小写或大写字母,也可以包含 0 到 9 之间的任何数字。对于此条件,正则表达式 [a-zA-Z0-9]
  • 第一个字符之后和直到到达@其余字符时,字符可以是小写或大写字母,或者它可以包含从0的任何数字到9或特殊符号“_”和“” .对于这个标准,正则表达式 [a-zA-Z0-9_.]*
  • 在上述两个条件之后,字符串包含符号’@’。该字符串应包含任何小写或大写字母或可以包含从 0 到 9 的任何数字。对于此条件,正则表达式 @[a-zA-Z0-9 ]
  • 包含“@”符号后,字符串应包含“.”符号,然后字符串应包含任何小写或大写字母。对于此条件,正则表达式 [.][a-zA-Z]

下面是上述方法的实现:

Java
// Java program to extract the
// email ids from a given text file
  
import java.util.regex.*;
import java.io.*;
  
class EmailIdExtraction {
    public static void extractEmailIds(
        BufferedReader br,
        PrintWriter pw,
        Pattern p)
    {
  
        String line = br.readLine();
  
        while (line != null) {
  
            Matcher m = p.matcher(line);
  
            // If any match
            while (m.find()) {
  
                // write the email id
                // to output.txt file
                pw.println(m.group());
            }
  
            // Goto next line in input.txt file
            line = br.readLine();
        }
  
        pw.flush();
    }
  
    // Driver code
    public static void main(String[] args)
        throws IOException
    {
  
        // PrintWriter for writing email id
        // to output.txt file
        PrintWriter pw
            = new PrintWriter("output.txt");
  
        // Compile() argument is the
        // regular expression for email id
        Pattern p
            = Pattern.compile(
                "[a-zA-Z0-9]"
                + "[a-zA-Z0-9_.]"
                + "*@[a-zA-Z0-9]"
                + "+([.][a-zA-Z]+)+");
  
        // BufferedReader for reading
        // from input.txt file
        BufferedReader br
            = new BufferedReader(
                new FileReader("input.txt"));
  
        // Calling extractEmailIds
        extractEmailIds(br, pw, p);
    }
}


输入:

输出:

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live