我正在尝试编写一个接受文件的小型java程序(使用Scanner类),将该文件作为String返回,然后搜索该字符串以查找以“Email:”开头且以“Email:”结尾的子字符串的任何实例“埃杜”。这个子字符串会有很多实例,我想将其解析成数组或新文件。
我知道如何找到子字符串,但我不知道如何A)搜索子字符串的所有实例,B)指定子字符串的开始和结束。
有人可以帮我解释这个逻辑吗?
谢谢!
答案 0 :(得分:2)
您可以使用indexOf()。我想你也可以告诉它在哪里搜索。所以要查找“电子邮件:”的实例:
while(index < input.size()){
substringLocation = input.indexOf("Email:", index);
// do something with substring
index = substringLocation;
}
答案 1 :(得分:1)
这听起来像是我的正则表达式:
import java.util.regex.*;
public class Test
{
private static final Pattern EMAIL_PATTERN = Pattern.compile
("Email:(.*?\\.edu)");
public static void main(String[] args)
{
String testString = "FooEmail:jjj@xyz.edu Bar Email:mmm@abc.edu Baz";
printEmails(testString);
}
public static void printEmails(String input)
{
Matcher matcher = EMAIL_PATTERN.matcher(input);
while (matcher.find())
{
System.out.println(matcher.group(1));
}
}
}
请注意,如果您有任何非 .edu
电子邮件,您会得到奇怪的结果...例如,如果您有“电子邮件:foo@bar.com电子邮件: a@b.edu“你最终会得到一场”foo@bar.com电子邮件:a@b.edu“。
答案 2 :(得分:1)
private static final Pattern EMAIL_PATTERN = Pattern.compile
("Email:(.*?\\.[a-z]*?[\\.[a-z]]*)");
将解决问题,它将适用于任何电子邮件模式,如abc.co.in xyz.com或test.fileserver.abc.co.bz域。