Я работаю с некоторым регулярным выражением для программы, я хочу, чтобы программа обнаружила определенный exe-файл, называемый gruell [что-то] .exe
Таким образом, я получил следующее регулярное выражение:
gruell.*\.exe[^\.]
После тестирования на обоих этих сайтах мои тесты были обнаружены правильно
Мой набор тестов: (и что должно завершиться неудачей и пройти)
- gruell-Core.exe [PASS]
- Gruell.exe [PASS]
- gruell_x64.exe [PASS]
- Gruell_x64-core.exe [PASS]
- grull.exe [FAIL]
- gruell _____. Exe [PASS]
- gruell_installer.msi [FAIL]
- gruell.html [FAIL]
- .gruell.exe.398sn [FAIL]
- gru-ell.exe [FAIL]
Когда я запускаю его на своем компьютере с помощью java.util.regex.Pattern, он ничего не найдет, хотя папка, которую я просил сканировать, содержит оба:
- gruell.exe
- .gruell.exe.398sn
Интересная часть - это когдаЯ удаляю [^.], Он обнаружит, но обнаруживает .gruell.exe.398sn, а это то, чего я не хочу.
Код, о котором идет речь:
File f = new File("G:\\dev\\gruell");
recursive_scan(f);
Функция:
for (file : location.listFiles())
{
if (file.isDirectory)
{
recursive_scan(file)
}
else
{
Pattern pattern = Pattern.compile("gruell.*\\.exe[^\\.]", Pattern.CASE_INSENSITIVE);
if (pattern.matcher(file.name).find())
{
System.out.println("FOUND: " + file.name);
}
}
}