Страница: 1 |
Есть строка следующего типа: "c:\Nata Shest\F B A\file1.mdb file2.mdb file3.mdb file4.mdb" - путь к файлам и перечень файлов через пробелы. Путь может быть сколь угодно ветвистым, и файлов может буть любое количество (в имени файлов не может быть пробелов). Необходимо получить перечень файлов: file1.mdb file2.mdb file3.mdb file4.mdb У меня это получилось сделать только следующим образом: 1. Вначале я распарсил искомую строчку следующим образом "([^\\]+)$" и получил строку "file1.mdb file2.mdb file3.mdb file4.mdb" 2. На втором этапе полученное выражение я распарсил так - "([^ ]+)" и получил то, что требовалось. Я не очень силен в регулярных выражениях, и поэтому мне интересно можно ли данную операцию выполнить за один этап и если можно то как? С уважением, Boris.
Попробуй Split() Страница: 1 |
Вопрос: Регулярные выражения - нужна помощь
Добавлено: 03.06.04 12:22
Автор вопроса: SuperBoris | ICQ: 155303702
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #1
Добавлено: 03.06.04 13:41
Номер ответа: 2
Автор ответа:
Андрей Щёкин [darxeth]
ICQ: 161560107
Вопросов: 9
Ответов: 52
Web-сайт:
Профиль | | #2
Добавлено: 04.06.04 01:53
В один этап можно. Что-то вроде ([^.\\]+\.[^ ]+)
Но я не могу понять, как в c:\Nata Shest\F B A\file1.mdb догадаться, что F и B это не отдельные имена файлов.
Мой регексп работает в предположении, что имя файла должно обязательно содержать в себе точку.
Номер ответа: 3
Автор ответа:
SuperBoris
ICQ: 155303702
Вопросов: 3
Ответов: 2
Профиль | | #3
Добавлено: 04.06.04 11:57
Андрей Щёкин, можешь объяснить почему именно в таком виде ты сфорировал маску для регулярного выражения? Я просто не совсем понял что к чему.
С уважением, Boris.
Номер ответа: 4
Автор ответа:
Андрей Щёкин [darxeth]
ICQ: 161560107
Вопросов: 9
Ответов: 52
Web-сайт:
Профиль | | #4
Добавлено: 04.06.04 23:05
Boris, это просто первый пришедший мне в голову вариант (но он работает на твоём примере, я проверил).
Вот пояснение:
(
[^.\\]+ (?# текст до точки - не точка и не slash (непосредственно имя))
\. (?# точка)
[^\ ]+ (?# текст после точки - не пробел (расширение))
)
Но если точки в имени файла нет, он не будет работать.