Я хотел бы найти количество экземпляров шаблона "$$$$" в текстовом файле. Следующий метод работает с некоторыми файлами, но не со всеми файлами. Например, он не работает со следующим файлом (http://www.hmdb.ca/downloads/structures.zip - это заархивированный текстовый файл с расширением .sdf) Не могу понять почему? Я также пытался избежать пробелов. Неудачно. Он возвращает 11, когда имеется более 35000 шаблонов "$$$$". Обратите внимание, скорость имеет решающее значение. Поэтому я не могу использовать более медленные методы.
public static void countMoleculesInSDF(String fileName)
{
int tot = 0;
Scanner scan = null;
Pattern pat = Pattern.compile("\\$\\$\\$\\$");
try {
File file = new File(fileName);
scan = new Scanner(file);
long start = System.nanoTime();
while (scan.findWithinHorizon(pat, 0) != null) {
tot++;
}
long dur = (System.nanoTime() - start) / 1000000;
System.out.println("Results found: " + tot + " in " + dur + " msecs");
} catch (Exception e) {
e.printStackTrace();
} finally {
scan.close();
}
}