You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible使用regex_search报unknown escape character错误如何解决

解决方法

直接使用如下任意一种写法即可完成提取:

  • 写法1(无需零宽断言,逻辑更简单不易出错)
    # 单引号包裹正则时无需额外转义
    {{ filename | regex_search('/(\w+)-', '\1') | first }}
    
  • 写法2(沿用你原有的零宽断言逻辑)
    {{ filename | regex_search('(?<=/)\w+(?=-)') }}
    

如果你的Jinja2表达式外层被双引号包裹,需要把正则内的\w替换为\\w即可,示例:

server_name: "{{ filename | regex_search('(?<=/)\\w+(?=-)') }}"

报错原因说明

  1. 语法结构错误:你原先的写法将正则表达式拆成了三个独立的括号包裹字符串,属于Jinja2模板语法错误,regex_search过滤器要求正则规则作为单个字符串参数传入。
  2. 转义规则冲突:Ansible的Jinja2模板解析和正则引擎会做两层转义处理,如果你用双引号包裹正则,\w会先被Jinja2解析,由于不存在\w这个转义字符就会触发报错;用单引号包裹正则则不会触发该层转义,可直接使用\w。

验证效果

当filename变量值为directory/SERVER1-info.dat时,上述两种写法的返回结果均为SERVER1,符合提取要求。

内容的提问来源于stack exchange,提问作者Julia L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 13:21:02