입력 텍스트의 행과 특정 항목을 일치시켜야합니다. 줄은 다음과 같습니다.Java에서 스캐너를 사용하여 행의 토큰을 일치시키는 데 문제가 있습니다.
to be/ Σ _ Σ [1pos, 1neg] {0=1, 2=1}
저는 스캐너 클래스를 사용하여 텍스트의 각 줄을 읽었으며 다음 코드를 작성했습니다. 그러나 "~"이 줄에 포함되어 있기 때문에 "~"의 줄이 일치하지 않아 뭔가가 제대로 작동하지 않습니다. 줄에 "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)
나는이 하나 더 질문 : 내가 처음까지 라인의 처음부터 모든 것을 저장할 수 있도록 내가 선을 처리 할 수있는 방법 "/" 상징? API에서 그 방법을 찾지 못했습니다. 그렇게 할 수 있습니까? 나는 기본적으로 줄을 훑고, 여러 변수에 줄을 저장 한 다음이 변수의 값을 사용하기를 연속적으로 원합니다. 첫 번째 "/"기호 앞에 얼마나 많은 토큰이 있는지 모르기 때문에 next()를 특정 횟수만큼 사용할 수 없습니다.
미리 감사드립니다.