Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для SyDr

Старожил


Сообщения: 215
Благодарности: 62

Профиль | Отправить PM | Цитировать


StringRegExp($Clip, '(\a:\\)([^/\\<>:*?"|])*\.(txt|txt\.bk)(\n|$)')

Пока не проверял. Поясню немного:
([^\\/<>:*?"|])* - означает наличие любых символов, кроме тех, которые не могут присутствовать в имени файла. Надеюсь, что правильно записал выражение. Хотя если в буфере будет что-то типа: D:::\Bla\Text.txt - правильно обравботать не получиться.
Ну, я не думаю, что кто-то будет так маньячиться.
Щас немного потестирую.

Стоп. пути только полные, или могут быть относительные?

Пока не работает. Даже понял, почему Сменились значения спец. символов. Придёться с английской справкой работать((



Я немножко в ступоре))
StringRegExp($Clip, '\b:\\([^\\/<>:*?|])*')) - вот это проверит, может ли являеться ли $Clip путём к файлу. Однако расширение она учесть не сможет (точки могут быть в любом месте файла). Это уже надо сильно усложнять выражение, что приведёт к увеличению времени обработки. А это здесь явно не нужно.
Щас буду думать дальше.

И ещё, как вариант, проверять, путь ли в буфере, не во время вызова контекстного меню, а регулярно, во время работы программы. Т. е. если буфер изменился - проверить, путь ли в нём теперь.


Я дурак. Поставил в регулярное выражение символ \ и думаю, почему неправильно обрабатывает...


Всё. Вот моё окончательное слово:
Код: Выделить весь код
StringRegExp($Clip, '\b:\\([^/<>:*?|])*(\.txt|txt\.bk)(\n|$)')
P. S. Только для полных путей.

-------

"Что мы думаем, знаем или во что верим в конце концов не так уж и важно.
Важно лишь то, что мы делаем."
Джон Раскин


Последний раз редактировалось SyDr, 16-11-2008 в 16:30.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:42, 16-11-2008 | #1166