Je dois faire correspondre certaines choses à partir des lignes d'un texte d'entrée. Les lignes ressemblent à ceci:Problème avec le jeton correspondant dans une ligne, en utilisant le scanner en Java
to be/ Σ _ Σ [1pos, 1neg] {0=1, 2=1}
J'utilise la classe du scanner pour lire chaque ligne du texte, et moi avons écrit le code suivant. Cependant, quelque chose ne fonctionne pas correctement, car le motif "to" n'est pas apparié à la ligne, et il devrait l'être, car "to" est contenu dans la ligne (j'ai essayé de faire correspondre non seulement "to" de la ligne, mais rien ne correspond):
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);
}
}
sortie:
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)
J'ai une autre question: comment puis-je traiter la ligne de sorte que je stocke tout depuis le début de la ligne jusqu'à ce que le premier «/» symbole? Je n'ai trouvé aucune méthode pour cela dans l'API. Est-il possible de le faire? Je veux fondamentalement passer par la ligne, stocker des morceaux de la ligne dans différentes variables, puis utiliser les valeurs de ces variables. Puisque je ne sais pas combien de jetons j'ai avant le premier symbole "/", je ne peux pas utiliser next() un certain nombre de fois.
Merci d'avance.