入力テキストの行から特定のものを一致させる必要があります。行は次のようになります。
to be/ Σ _ Σ [1pos, 1neg] {0=1, 2=1}
Scanner クラスを使用してテキストの各行を読み取り、次のコードを記述しました。ただし、「to」のパターンが行に対して一致していないため、何かが正しく機能していません。行に「to」が含まれているため、そのはずです(行から「to」だけでなく一致させようとしましたが、しかし、何も一致しません):
Scanner scanner = new Scanner(file);
while(scanner.hasNext()) {
String line = scanner.nextLine();
System.out.println("line: " + line);
Pattern p_pos = Pattern.compile("to");
Matcher m_pos = p_pos.matcher(line);
String match = m_pos.group(0);
System.out.println("match: " + match);
boolean b_pos = m_pos.matches();
if(b_pos) {
System.out.println(match);
}
}
出力:
line: to be/ Σ _ Σ [1pos, 1neg] {0=1, 2=1}
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:485)
at lady.PhrasesFromFile.readFile(PhrasesFromFile.java:31)
at lady.PhrasesFromFile.main(PhrasesFromFile.java:17)
もう 1 つ質問があります。行の先頭から最初の "/" 記号まですべてを保存するように行を処理するにはどうすればよいですか? APIでそのためのメソッドが見つかりませんでした。そうすることは可能ですか?私は基本的に、連続して行を通過し、行の一部をさまざまな変数に格納してから、これらの変数の値を使用したいと考えています。最初の「/」記号の前にいくつのトークンがあるかわからないため、next() を特定の回数使用することはできません。
前もって感謝します。