Назад | Перейти на главную страницу

Возможное разделение строки на обратной косой черте

Я передаю список каталогов / подкаталогов в playbook следующим образом:

dirs=['Web\this','Web\that','Web']

Это отлично работает, когда я действительно выполняю задачи в этих каталогах (win_shell, вызывая процесс сборки), но позже мне нужно скопировать файлы, и '\' не работает, когда используется как часть имени файла. Мне интересно использовать следующее, поэтому я получу имя модуля для большинства сборок и «Web» для того, что находится в корневой папке:

dirs[1].split('\\')[-1]

Я надеялся, что это вернет «это», «то» и «Интернет» соответственно.

Но я не могу найти никакой комбинации косой черты или магии регулярного выражения, чтобы разделить мои строки. Я нашел около 5 вопросов / ответов в StackExchange, которые близки, но ни один из них, похоже, этого не делает.

Я также пробовал это с вариациями

"{{ dirs[1] | regex_replace('\\','-') }}"

Можно избежать алхимии цитат и экранирования и объявить переменную с разделителем. Использовать Стиль с одинарными кавычками; обратная косая черта "\" может использоваться свободно. Например, пьеса ниже

  vars:
    separator: '\'
    dirs: ['Web\this','Web\that','Web']
  tasks:
    - debug:
        msg: "{{ dirs[1].split(separator)[-1] }}"

дает

"msg": "that"