我需要匹配输入文本行中的某些内容。这些行看起来像这样:
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)
我还有一个问题:如何处理该行,以便存储从行首到第一个“/”符号的所有内容?我在 API 中找不到任何方法。有可能这样做吗?我基本上想连续遍历该行,将行的各个部分存储在不同的变量中,然后使用这些变量的值。由于我不知道在第一个“/”符号之前有多少个标记,因此我无法使用 next() 一定次数。
先感谢您。