入力ファイル ( book.txt ) に次のような文が含まれているとします。
book 'learning java' for doctor ahmed mohamed.
the best title is:How to program for simth sahg.
キーボードから入力する代わりに、ファイル(book.txt)から各文を読み取り、ファイル内の各文を3つのパターンに一致させたい:
String p1 = "(book|\\)|\\:) (.*) for( doctor| author|) (.*)";
String p2 = "regex two";
String p3 = "regex three";
// matcher for each of the patterns .
Matcher m1=Pattern.compile(p1).matcher(inputtext);
Matcher m2=Pattern.compile(p2).matcher(inputtext);
Matcher p3=Pattern.compile(p3).matcher(inputtext);
文が任意のパターンに一致する場合、[ Author , title] を抽出して新しいファイル (bookout.txt) に書き込みます。
or not match any pattern (bookout.txt) に「不一致」という文を書く
タラは
String p1 = "(book|\\)|\\:) (.*) for( doctor| author|) (.*)";
String p2 = "regex two";
String p3 = "regex three";
String inputtext = null;
// matcher for each of the patterns .
Matcher m1=Pattern.compile(p1).matcher(inputtext);
Matcher m2=Pattern.compile(p2).matcher(inputtext);
Matcher m3=Pattern.compile(p3).matcher(inputtext);
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("bookout.txt",true));
BufferedReader br = new BufferedReader(new FileReader(new File("book.txt") ));
inputtext= br.readLine();
while ((inputtext=br.readLine())!= null)
System.out.println(inputtext);
String author=null;
String title = null;
if (m1.find()) { //if input matches p1
title = m1.group(2).trim();
author = m1.group(4).trim();
} else if (m2.find()) { //else if input matches p2
title = m2.group(1).trim();
author = m2.group(3).trim();
} else if (m3.find()) { //else if input matches p3
author = m3.group(2).trim();
title = m3.group(4).trim();
}
if (author ==null || title == null) { //If no matches set the author and title strings...
bw.write("inputNot match"); //There's no match
} else { //Otherwise...
bw.write("Author : " + author);
bw.write("Title : " + title);
bw.close();
}
} catch (Exception e) {
e.printStackTrace();
}
助けてください。コンソールに表示する代わりに出力を表示する方法は、別のファイル (bookout.txt) に書き込まれます。