воскресенье, 29 ноября 2009 г.

Regex и файловая маска

Часто надо было отфильтровать файлы по некоему общему признаку в их имени. Для этого можно использовать регулярные выражения. Писать регулярные выражения в конфиг-файле достаточно неудобно, да и объяснять пользователям, что будет искать то или иное регулярное выражение еще сложнее. Поэтому проще использовать обычную файловую маску, а из нее уже в программе получать нужное регулярное выражение:

public String getRegexFromFileMask(String fileMask) {
  String regexStr = fileMask.replaceAll("[*]{1}", "[a-zA-Z_0-9]{0,}");
  regexStr = regexStr.replaceAll("[\\.]{1}", "\\\\.");
  regexStr = regexStr.replaceAll("\\?", "[0-9]{1}");
  return regexStr;
}


* This source code was highlighted with Source Code Highlighter.

Таким образом мы, например:
из строки "log*.txt" получаем "log[a-zA-Z_0-9]{0,}\.txt"

* This source code was highlighted with Source Code Highlighter.

Комментариев нет:

Отправить комментарий