Ansible:正则表达式在列表中搜索特定字符串

格林乔伊

我有一个名为somelist的字符串列表,如下所示。如何指定正则表达式来搜索字符串名称:bob-请注意,该名称不应该与名称:bobby匹配。我尝试使用^和$来指示字符串的开始,字符串的结束,但是它不起作用。另外,冒号还会导致以下错误:语法错误-在此上下文中不允许使用映射值。我不知道如何逃脱结肠。谢谢!

---
 - hosts: localhost

   vars:
     somelist:
      - "name: greg"
      - "name: bobby"
      - "name: joe"

   tasks:
   - debug: msg='{{ somelist is search("^name: bob$") }}'   # <--- this should equate to false

   - debug: msg='{{ somelist is search("^name: bobby$") }}' # <--- this should equate to true
弗拉基米尔·博特卡

使用选择并测试长度。例如

    - debug:
        msg: "{{ somelist|
                 select('search', '^name: bob$')|
                 list|length > 0 }}"   # <--- this should equate to false

    - debug:
        msg: "{{ somelist|
                 select('search', '^name: bobby$')|
                 list|length > 0 }}"   # <--- this should equate to true

给(删节)

  msg: false

  msg: true

Collon “:”不是Python regex特殊字符。不必逃避它。将正则表达式放入变量可以简化条件。例如,以下任务

    - debug:
        msg: bob is in the list
      when: somelist|select('search', regex)|list|length > 0
      vars:
        regex: '^name: bob$'
    - debug:
        msg: bobby is in the list
      when: somelist|select('search', regex)|list|length > 0
      vars:
        regex: '^name: bobby$'

给(删节)

skipping: [localhost]

ok: [localhost] => 
  msg: bobby is in the list

可以避免使用正则表达式。例如,映射from_yaml,创建词典列表,然后选择attattr以下任务给出相同的结果

    - debug:
        msg: "{{ somelist|
                 map('from_yaml')|
                 selectattr('name', 'eq', 'bob')|
                 list|length > 0 }}"

    - debug:
        msg: "{{ somelist|
                 map('from_yaml')|
                 selectattr('name', 'eq', 'bobby')|
                 list|length > 0 }}"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式提取特定的字符串

正则表达式搜索字符串?

正则表达式-搜索匹配特定的字符串

正则表达式格式以从列表中查找特定的字符串

在带有正则表达式的列表中搜索字符串

使用Ansible正则表达式在文件中搜索字符串

使用python正则表达式在字符串中搜索长度为6或以上的特定重复(mnr)

正则表达式搜索子字符串

搜索字符串的正则表达式

正则表达式特定的匹配字符串

在正则表达式中搜索模式时如何忽略特定的字符串?

正则表达式停止在特定字符串处搜索

如何使用正则表达式搜索特定模式字符串的集合?

正则表达式与特定字符串匹配

正则表达式无法搜索字符串

特定字符串的正则表达式

如何使用正则表达式从字符串中删除特定字符串

特定元素的列表中的正则表达式/拆分字符串

特定字符串/路径的正则表达式

正则表达式排除特定字符串

字符串列表中的正则表达式搜索字符串列表

字符串对象列表的正则表达式

使用正则表达式搜索字符串中的子字符串

检查字符串是否遵循python正则表达式中的特定字符串列表

需要搜索字符串的正则表达式

如何使用正则表达式在字符串中搜索特定模式

Ansible 正则表达式替换字符串

使用正则表达式在字符串中搜索并替换为python列表中的值

从正则表达式的组合列表中查找与字符串匹配的正则表达式