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

原文:https://www . geesforgeks . org/Java-程序读取所有电子邮件-存在于给定文件中/

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

示例:

输入:输入. txt 输出:输出. 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);
    }
}

Input:

你好,我的名字是比沙尔·杜比,我的邮箱是 dubey.bishal159@gmail.com。欢迎来到极客的计算机科学门户网站。它包含写得好,想得好,解释得好的计算机科学和编程文章,测验。我的兄弟比卡什·杜比有 bikashdubey42@gmail.com 的电子邮件 id,我的朋友塔努·贾恩有 tanu_jain@gmail.com 的电子邮件 id。如果你喜欢极客博客并想投稿,你也可以把你的文章邮寄到 contribute@geeksforgeeks.org。

输出:

dubey.bishal159@gmail.com bikashdubey42@gmail.com tanu_jain@gmail.com contribute@geeksforgeeks.org