我正在尝试编写一个小的java程序,它将接受一个文件(使用Scanner类),将文件作为字符串返回,然后在该字符串中搜索以"Email:“开头并以".edu”结尾的任何子字符串的实例。该子字符串将有许多实例,我希望将每个实例解析为一个数组或一个新文件。
我知道如何查找子串,但我不知道如何A)搜索子串的所有实例,以及B)指定子串的开始和结束。
有人能帮我解决这个逻辑吗?
谢谢!
发布于 2010-02-05 08:23:48
对我来说,这听起来像是正则表达式的情况:
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
电子邮件,你会得到奇怪的结果...例如,如果你有"Email: foo@bar.com Email: a@b.edu“,你最终会得到匹配的"foo@bar.com Email: a@b.edu”。
发布于 2010-02-05 08:09:55
您可以使用indexOf()。我想你也可以告诉它从哪里开始搜索。因此,要找到“Email:”的实例:
while(index < input.size()){
substringLocation = input.indexOf("Email:", index);
// do something with substring
index = substringLocation;
}
发布于 2011-08-31 08:45:27
private static final Pattern EMAIL_PATTERN = Pattern.compile
("Email:(.*?\\.[a-z]*?[\\.[a-z]]*)");
将解决这个问题,itt将适用于任何电子邮件模式,如abc.co.in,xyz.com或test.fileserver.abc.co.bz域名。
https://stackoverflow.com/questions/2205766
复制相似问题