Сколько же в каждой малюсенькой задаче сидит огромных вопросов. Не перестаю порой удивляться этой известной истине. Делаю поле для ввода маски выбора отображаемых файлов (ну вы точно знаете, о чем я, например, *.txt). Ясно, что надо использовать мощный механизм стандартных регулярных выражений в Java, но синтаксис там другой, более мощный. Всем известно, что в записи *.txt символ звездочки означает "любое количество любых символов", а в Java звездочка — повторение символов перед ней, например, а* — любое число букв а. Но это не проблема — сейчас, думаю, напишу парсер из одной нотации в другую, но сначала надо уточнить спецификацию простых выражений типа *.txt — и тут началось.
Во-первых, для меня, плохо знающего систему Unix, было новостью, что эти регулярные выражения называются glob (от global command).
Теперь — главное. Запись *.* означает любое имя и любое расширение, но если подходить формально, то это любое имя-расширение, содержащее точку! То есть файлы вообще без расширения сюда не попадают. А теперь откройте ваш любимый Norton-style файловый менеджер (проверил на Total Commander и Far), нажмите "серый плюс", оставьте введенное там по умолчанию *.* и нажмите ввод. Выделятся все файлы, включая те, что не имеют расширения. Нет в мире справедливости.
Во-первых, для меня, плохо знающего систему Unix, было новостью, что эти регулярные выражения называются glob (от global command).
Теперь — главное. Запись *.* означает любое имя и любое расширение, но если подходить формально, то это любое имя-расширение, содержащее точку! То есть файлы вообще без расширения сюда не попадают. А теперь откройте ваш любимый Norton-style файловый менеджер (проверил на Total Commander и Far), нажмите "серый плюс", оставьте введенное там по умолчанию *.* и нажмите ввод. Выделятся все файлы, включая те, что не имеют расширения. Нет в мире справедливости.
How many huge questions are sitting in every tiny task. I never cease to be surprised at this famous truth. I make a field for entering a mask for selecting the displayed files (well, you know exactly what I mean, for example, * .txt). Clearly, you need to use the powerful standard regex engine in Java, but the syntax is different, more powerful. Everyone knows that in the * .txt entry, an asterisk means "any number of any characters", and in Java, an asterisk means repeating the characters before it, for example, a * means any number of letters a. But this is not a problem - now, I think, I’ll write a parser from one notation to another, but first we need to clarify the specification of simple expressions like * .txt - and that’s where it started.
First of all, for me, who knew little about the Unix system, it was news that these regular expressions are called glob (from the global command).
Now the main thing. The entry *. * Means any name and any extension, but if you approach formally, then this is any extension name containing a period! That is, files without an extension do not get here. Now open your favorite Norton-style file manager (checked on Total Commander and Far), click the gray plus, leave the default *. * Entered there and press enter. All files will be highlighted, including those that do not have an extension. There is no justice in the world.
First of all, for me, who knew little about the Unix system, it was news that these regular expressions are called glob (from the global command).
Now the main thing. The entry *. * Means any name and any extension, but if you approach formally, then this is any extension name containing a period! That is, files without an extension do not get here. Now open your favorite Norton-style file manager (checked on Total Commander and Far), click the gray plus, leave the default *. * Entered there and press enter. All files will be highlighted, including those that do not have an extension. There is no justice in the world.
У записи 2 лайков,
0 репостов.
0 репостов.
Эту запись оставил(а) на своей стене Александр Левантовский