Как упоминал Эрик Венделин, вы можете сделать что-то вроде этого:
str1 = "pattern"
var re = new RegExp(str1, "g");
"pattern matching .".replace(re, "regex");
Это дает "regex matching ."
. Однако он будет терпеть неудачу, если str1 - "."
. Вы ожидаете, что результат будет "pattern matching regex"
, заменив период на "regex"
, но он окажется ...
regexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregex
Это потому, что, хотя "."
a String, в конструкторе RegExp он по-прежнему интерпретируется как регулярное выражение, что означает любой символ нестрочного разрыва, означающий каждый символ в строке. Для этой цели может быть полезной следующая функция:
RegExp.quote = function(str) {
return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};
. Тогда вы можете сделать:
str1 = "."
var re = new RegExp(RegExp.quote(str1), "g");
"pattern matching .".replace(re, "regex");
, уступая "pattern matching regex"
.
Извлечение из одной из справочных ролей для установки gitlab-ce => https://github.com/geerlingguy/ansible-role-gitlab
- name: Download GitLab repository installation script.
get_url:
url: "{{ gitlab_repository_installation_script_url }}"
dest: /tmp/gitlab_install_repository.sh
validate_certs: "{{ gitlab_download_validate_certs }}"
when: not gitlab_file.stat.exists
- name: Install GitLab repository.
command: bash /tmp/gitlab_install_repository.sh
when: not gitlab_file.stat.exists
Условия здесь, чтобы остановить установку, если это уже сделано. Посмотрите на роль и другие ее задачи и значения по умолчанию для получения дополнительной информации