Я пытаюсь создать регулярное выражение, чтобы искать имена файлов из полных путей к файлам, но он не должен возвращаться только для каталога. Например, C:\Users\IgneusJotunn\Desktop\file.doc
должен вернуть file.doc
, тогда как C:\Users\IgneusJotunn\Desktop\folder
не должен отвечать на совпадения. Это все файлы Word или Excel, но я предпочитаю не полагаться на это. Это:Как вы находите "."?
StringRegExp($string, "[^\\]*\z",1)
находит, что после последней косой черты, но не может отличать файлы от папок. Это:
StringRegExp($string, "[^\\]*[dx][ol][cs]\z",1)
почти работает, но это некрасиво хак и может быть DOCX или XLSX файлы. Кроме того, файлы могут быть названы как MyNamesDoc.doc
. Легко решается, если я могу найти период, но .
- это используемый символ (это означает любой символ, кроме новой строки), который, похоже, не работает с экранами. Это:
StringRegExp($ue_string, "[^\\]*\..*\z",1)
должен работать, находя что-либо после последней обратной косой черты, захватывая только что-то с периодом в нем. Как включить период? Или любой способ совпадения файлов?
Редактировать: Ответил мой вопрос. Меня интересует, почему он не работает, и если есть более элегантное решение.
Вперед и сделайте папку прямо сейчас и введите в нее период. Полностью допустимый синтаксис. Например, «My.Folder.Of.Awesome». '/? < > \: * | «' - некоторые незаконные символы, но периоды в порядке. – TheZ