Я пытаюсь создать регулярное выражение, которое обнаружит любой символ, который Windows не принимает как часть имени файла (они одинаковы для других ОС? Я не знаю, если честно).
Эти символы:
\ / : * ? " |
Во всяком случае, это то, что у меня есть: [\\/:*?\"<>|]
Тестер на http://gskinner.com/RegExr/ показывает, что это работает.
Для строки Allo*ha
загорается символ *
, сигнализируя, что он найден. Если я войду в Allo**ha
, тогда загорится только первый *
. Поэтому я думаю, что мне нужно изменить это регулярное выражение, чтобы найти все проявления этих символов, но я не уверен.
Вы видите, на Java мне повезло, что у меня есть функция String.replaceAll(регулярное выражение String, замена строки). В описании говорится:
Заменяет каждую подстроку этой строки, которая соответствует данному регулярному выражению с указанной заменой.
Иными словами, даже если регулярное выражение только находит первый, а затем останавливает поиск, эта функция все равно найдет их все.
Например: String.replaceAll("[\\/:*?\"<>|]","")
Однако я не чувствую, что могу рискнуть. Так кто-нибудь знает, как я могу это расширить?