2013-06-25 1 views
0

Я ищу регулярное выражение, которое соответствует каталогам, но не стандартным файлам (в текущем рабочем каталоге).regex: Как сопоставить каталог (но не «нормальный» файл)?

Ищет «.» содержащиеся в расширении файла, очевидно, слишком просты, могут быть папки, содержащие точки.

+3

Какая операционная система? Как создается список локального каталога? –

+4

Вы должны спросить себя, что отличает имена файлов и имена каталогов. Нет никакой неотъемлемой разницы, поэтому вы не можете делать это с помощью регулярного выражения. –

+0

Я не вижу никакого регулярного выражения, которое может сделать такую ​​вещь. – Toto

ответ

1

Чтобы ответить на этот вопрос в комментариях:

На самом деле, как бы один совпадение «все, что не содержит точки»?

Вы можете сделать: ^[^.]+$

+0

Большое спасибо за помощь, это работает (для моего использования) –

+0

@MariusHofert: Добро пожаловать. – Toto

0

Предполагается, что вы ссылаетесь на ОС Windows: Использование регулярного выражения для определения того, что это не так. Поскольку файл не может иметь никакого расширения, и папка может иметь период и расширение как часть его имени.
Наилучшим подходом является использование FileAttributes в коде, как это (.NET C#):

// get the file attributes for file or directory 
FileAttributes attributeUnknown = File.GetAttributes(@"C:\MariusHofert"); 

//detect whether its a directory or file 
if((attributeUnknown & FileAttributes.Directory) == FileAttributes.Directory) 
    MessageBox.Show("Its a directory"); 
else 
    MessageBox.Show("Its a file"); 

Reference Link

+0

В соответствии с OP это 'Ubuntu 13.04' – anubhava

+0

Да - добавил он в своих комментариях позже. – Kash