文字列から部分文字列の多くのインスタンスを解析するJava
-
18-09-2019 - |
質問
私は(Scannerクラスを使用して)ファイルを受け入れる小さなJavaプログラムを記述しようとしています、文字列としてファイルを返却し、その後で始まる部分文字列の任意のインスタンスに対して、その文字列を検索し、「電子メール:」で終わります".eduの"。私は、アレイまたは新しいファイルに出て解析するそれぞれのこの部分文字列の多くのインスタンス、があります。
私は部分文字列を見つける方法を知っているが、私はA)のサブストリングのすべてのインスタンスを検索し、B)のサブストリングの開始と終了を指定する方法がわからない。
誰かがこのロジックで私を助けることができますか?
ありがとうございます。
解決
この私には、正規表現のためのケースのように聞こえるます:
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));
}
}
}
foo@bar.comメール:@ bのあなたがそこに任意のの非の.edu
メールを持っている場合は、」電子メールを持っている場合は、たとえば...奇妙な結果を得ることができますことに注意してください。 EDU foo@bar.comメール」あなたはの試合で終わるだろう 『:』 a@b.edu
他のヒント
あなたは()のindexOfを使用することができます。私はあなたがどこすぎから検索することを伝えることができると思います。だから、あなたのインスタンスを見つけるには、「電子メールを:」ます:
while(index < input.size()){
substringLocation = input.indexOf("Email:", index);
// do something with substring
index = substringLocation;
}
private static final Pattern EMAIL_PATTERN = Pattern.compile
("Email:(.*?\\.[a-z]*?[\\.[a-z]]*)");
問題を解決し、ITTは、そのようなabc.co.in xyz.comまたはtest.fileserver.abc.co.bzドメインとして任意の電子メールのパターンのために動作します。
所属していません StackOverflow