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