регулярное выражение для поиска имени последней папки в пути - PullRequest
0 голосов
/ 09 января 2019

У меня есть следующий путь:

O:\Audits\Crisis Management 2016\2016 ECPR Final Report.pdf

И мне нужно регулярное выражение, которое возвращает имя последней папки (крайняя справа) в пути, которая будет « Crisis Management 2016 ».

Я пробовал (?:[^\\]*\\|^)[^\\]*$, что близко, но возвращает " Crisis Management 2016 \ 2016 ECPR Final Report.pdf ", который включает в себя обратную косую черту и имя файла.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Вы можете использовать

[^\\]+(?=\\[^\\]+\\?$)

См. Демоверсию regex

Детали

  • [^\\]+ - 1+ символов кроме \
  • (?=\\[^\\]+\\?$) - положительный прогноз, требующий \, 1+ символов, отличных от \, а затем необязательный \ в конце строки непосредственно справа от текущего местоположения.

Если вы можете легко получить доступ к группам захвата, а просмотр не поддерживается, используйте

([^\\]+)\\[^\\]+\\?$

См. это демо .

Предварительный просмотр превращается в шаблон потребления, а первый шаблон заключен в круглые скобки (образуя Группу 1, которая удерживает субматч в буфере памяти).

0 голосов
/ 10 января 2019
.*\\([^\\]+)\\
  • . * означает, что мы идем ...
  • но когда достигнешь EOF, шаг за шагом возвращайся ...
  • и проверьте следующее ( \ ([^ \] +) \ ) условие;
  • затем запомните имя папки в группе захвата;
  • Вот и все.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...