Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Есть у нас специалисты по регуляркам? По моему Сергей и Юра соображают?
Есть плагин hpwControl с помощью которого можно использовать регулярные выражения. Мне надо найти в файле все пути к файлам и папкам которые в нем записаны. Может быть и только буква диска например C:\ или F:\ И Путь с пробелами, и кирилица, и несколько папок подряд, файлы с разрешением и без, путь может заканчиваться \ может и без слеша быть. Короче как обычно все возможные варианты.
Вопрос решен:
Цитата (Сергей)
Регулярное выражение которое ищет все пути к файлам и папкам.
([c-zC-Z]:\\)[^\r"=]+
вот еще пример
([c-zC-Z]:\\)[^\r"=]+(\..{3})?
в фиг.скобках указано колл. букфф в расширении если 3 не надо, то заменить {2,4}={старт,конец}
дополнение [c-zC-Z] это буквы лок.дисков. Если есть уверенность что диски будут только заглавной можно изменить [C-Z] А если учитывается диск А, то [a-zA-Z]
дополнение [c-zC-Z] это буквы лок.дисков. Если есть уверенность что диски будут только заглавной можно изменить [C-Z] А если учитывается диск А, то [a-zA-Z]
Сообщение отредактировано Сергей - Пт, 08 Марта 2013, 17:06
Короче делаю программку что бы можно было в паб файле изменить пути если проект не архивировался или нужны папки с файлами по своему пути, а не так как нб их собирает в одну папку.
К примеру кто то сделал проект, без архивации выложил его со своей структурой файлов и папок. Ты у себя его в этой программе открываешь, указываешь путь к паб файлу, и она все пути исправляет на те в которой лежит файл.
Думаю удобно будет.
Добавлено (08 Марта 2013, 09:06) ---------------------------------------------
там в плагине он преобразует как надо, а так получится у тебя переменная [c-zC-Z] и выдаст ошибку
Добавлено (08 Марта 2013, 09:10) --------------------------------------------- mishem, открывай свойство команды и вставляй в поле регулярку - он преобразует как ему надо.
Но вот поиск... Я то сделал поиск в строке, а у тебя надо в много строчном. Тут надо по другому делать, т.к. в плагине не все фишки регулярки используются, только основные. надо подумать...
Уже ближе к истине... Находит много лишних переменных.
Можно или вообще не искать переменные, или только [PubDir] и [Embedded]
Ну как вариант [WindowsDir][ProgramFiles][PubDrive][MyDocuments] По значимости в порядке убывания. Так как эти переменные очень редко используются для обращения к файлу.
Те которые файлы находятся в [PubDir] , их вряд ли забудут положить. [Embedded]? В проекте есть место где указан полный путь к вложенным. [WindowsDir]? Здесь да, могут расчитывать что такй файл есть у всех, но у кого то может и не быть, но это мне кажется не столь важно, так как не каждый захочет кидать не известный файл в системную директорию. [ProgramFiles][MyDocuments]? Я думаю это вообще не серьезно, если только для себя? [PubDrive] опять же как и [PubDir]
По этому мне кажется поиск путей с переменными лучше вообще убрать. Это ты уж слишком перестарался. Слишком хорошо, тоже не хорошо. Не хочешь читать хелп?
не получается, т.к. [...] подразумевает все переменные... Я не селен в таких глубоких познаниях регулярки Могу только жёстко перечислить [PubDir],[TempDir] и т.д. Но как получится хз, пробывать чет уже не хочется-мозг кипит.
Добавлено (08 Марта 2013, 12:12) ---------------------------------------------
Цитата (mishem)
По этому мне кажется поиск путей с переменными лучше вообще убрать.
хотел грабить все пути, но переоценил свои возможности
Цитата (mishem)
Ну как вариант [WindowsDir][ProgramFiles][PubDrive][MyDocuments]
да, так можно, немного проще... Если следовать задумки проекта, то PubDir трогать то и не надо.
Во, это то что надо. Но что то не находит. Я по количеству строк смотрю. У меня не то 132, не то 136 находит. Переделывать пока не охота что бы точный список получить. Я отсев одинаковых сделал.
А регулярка находит 131.
Если надоело, брось, если нет, еще вопрос.
Но думаю это попроще будет. Удалить имена файлов, т.е. оставить только пути. И удалить одинаковые пути оставив по одному. Или найти путь который есть во всех путях. Тоесть груба говоря который был [PubDir].
Но есть один ньюанс, путей может быть несколько и все разные. Надо что бы они все остались.
Добавлено (08 Марта 2013, 12:21) ---------------------------------------------
Цитата (Сергей)
Если следовать задумки проекта, то PubDir трогать то и не надо.
Да их в принципе любые переменные трогать не надо. Если НБ их оставляет и не превращает в абсолютный путь, то и нечего с ним заморачиваться.
Добавлено (08 Марта 2013, 12:27) ---------------------------------------------
Цитата (mishem)
А регулярка находит 131.
Да, не находит путь к папкам.
Тоесть если файла нет, то и найти не может. В данном случае C:\MyProgram
Но эта папка не нужна, но есть другие которые нужны. К примеру если функцию указываешь не в директории НБ, то она будет выглядеть таким видом. Может путь быть просто без файла, к папке. Типа C:\MyProgram\
Нельзя. Если выдергивать текст паб файла в переменную, после заменить и сохранить в файл, то в некоторых случаях пропадают данные.
НБ спецсимволы меняет, или удаляет, я особо не стал вникать. Если б она могла менять непосредственно в файле, то да, проблем бы не было. А так я подключаю плагин Editor's Toolbox и с помощью него меняю путь. Он работает с форматированным текстом и сохраняет его как есть. Не хочешь читать хелп?
Удалить имена файлов, т.е. оставить только пути. И удалить одинаковые пути оставив по одному. Или найти путь который есть во всех путях. Тоесть груба говоря который был [PubDir].
это типа аппетит пришел теперь ищет файлы и папки.
В много строчном тексте отлично. В одно строчном цепляет следующее слово. Мне в принципе и этого достаточно, но так, на всякий случай, вдруг кто еще пользоваться будет. Или посмотришь, подправишь.
Благодарю, Серег. В проекте код уменьшился раза в четыре. И скорость увеличилась соответственно.
Цитата (Сергей)
это типа аппетит пришел
Дык.... Глупо думать Иначе.
Я вообще эту тему создал в надежде что здесь будем собирать регулярки. Только вот чистить бы ее переодически и оставлять регулярку и описание для чего она предназначена.
в регулярке с повторами затык. Это уже не мой полет. На моих вариантах НБ виснет, тут лучше заюзать старыми-добрыми методами через листбокс и заодно в цикле отделять путь и имя файла. В плагине регулярка очень проста, не понимает много модификаторов,квантификаторов,групп и т.д. А без них сложный поиск с условиями тяжеловато сделать.
тут лучше заюзать старыми-добрыми методами через листбокс
Я так и делал. Но сейчас раз плагин hpwControl подключил буду через него наверно все остальные действия делать.
Ты попробуй эту регулярку доделать что бы в однострочных тоже нормально искало. И можно тему чистить до первого поста и во втором оставить регулярку с описанием. Не хочешь читать хелп?