v#无效表达式\nsre_常量.错误:错误字符范围,Ansib

2024-06-16 09:57:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Ansible将内容写入一个文件,该文件如下所示:

[localhost]
localhost

[es-master]

[es-data]

[es-client]

这出戏是:

^{pr2}$

我可以看到结果是一个字典,值是存在的,但是我不能选择特定的键并将其写入文件。现在我不确定我是否正确地使用了reg-ex,但这里是我看到的

完整的回溯是:

Traceback (most recent call last):
  File "/tmp/ansible_b91Bg5/ansible_module_lineinfile.py", line 461, in <module>
    main()
  File "/tmp/ansible_b91Bg5/ansible_module_lineinfile.py", line 453, in main
    ins_aft, ins_bef, create, backup, backrefs)
  File "/tmp/ansible_b91Bg5/ansible_module_lineinfile.py", line 251, in present
    bre_m = re.compile(to_bytes(regexp, errors='surrogate_or_strict'))
  File "/usr/lib/python2.7/re.py", line 194, in compile
    return _compile(pattern, flags)
  File "/usr/lib/python2.7/re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: bad character range

failed: [localhost -> localhost] (item={u'kernel': None, u'root_device_type': u'ebs', u'private_dns_name': u'ip-172-16-9-68.ap-southeast-1.compute.internal', u'public_ip': None, u'private_ip': u'172.16.9.68', u'id': u'i-0d4310cf82c52fd0b', u'ebs_optimized': False, u'state': u'running', u'virtualization_type': u'hvm', u'architecture': u'x86_64', u'ramdisk': None, u'block_device_mapping': {u'/dev/sda1': {u'status': u'attached', u'delete_on_termination': True, u'volume_id': u'vol-04be65eead21e611f'}}, u'key_name': u'ansible-managed', u'image_id': u'ami-325d2e4e', u'tenancy': u'default', u'groups': {u'sg-1e3c9d79': u'elasticsearch-mayassar-production', u'sg-86018ce2': u'mayassar-es-external'}, u'public_dns_name': u'', u'state_code': 16, u'tags': {u'Name': u'Kill-master-es'}, u'placement': u'ap-southeast-1b', u'ami_launch_index': u'0', u'dns_name': u'', u'region': u'ap-southeast-1', u'launch_time': u'2018-01-17T04:49:28.000Z', u'instance_type': u'm4.4xlarge', u'root_device_name': u'/dev/sda1', u'hypervisor': u'xen'}) => {
    "changed": false, 
    "failed": true, 
    "item": {
        "ami_launch_index": "0", 
        "architecture": "x86_64", 
        "block_device_mapping": {
            "/dev/sda1": {
                "delete_on_termination": true, 
                "status": "attached", 
                "volume_id": "vol-04be65eead21e611f"
            }
        }, 
        "dns_name": "", 
        "ebs_optimized": false, 
        "groups": {
            "sg-1e3c9d79": "elasticsearch-mayassar-production", 
            "sg-86018ce2": "mayassar-es-external"
        }, 
        "hypervisor": "xen", 
        "id": "i-0d4310cf82c52fd0b", 
        "image_id": "ami-325d2e4e", 
        "instance_type": "m4.4xlarge", 
        "kernel": null, 
        "key_name": "ansible-managed", 
        "launch_time": "2018-01-17T04:49:28.000Z", 
        "placement": "ap-southeast-1b", 
        "private_dns_name": "ip-172-16-9-68.ap-southeast-1.compute.internal", 
        "private_ip": "172.16.9.68", 
        "public_dns_name": "", 
        "public_ip": null, 
        "ramdisk": null, 
        "region": "ap-southeast-1", 
        "root_device_name": "/dev/sda1", 
        "root_device_type": "ebs", 
        "state": "running", 
        "state_code": 16, 
        "tags": {
            "Name": "Kill-master-es"
        }, 
        "tenancy": "default", 
        "virtualization_type": "hvm"
    }, 
    "module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_b91Bg5/ansible_module_lineinfile.py\", line 461, in <module>\n    main()\n  File \"/tmp/ansible_b91Bg5/ansible_module_lineinfile.py\", line 453, in main\n    ins_aft, ins_bef, create, backup, backrefs)\n  File \"/tmp/ansible_b91Bg5/ansible_module_lineinfile.py\", line 251, in present\n    bre_m = re.compile(to_bytes(regexp, errors='surrogate_or_strict'))\n  File \"/usr/lib/python2.7/re.py\", line 194, in compile\n    return _compile(pattern, flags)\n  File \"/usr/lib/python2.7/re.py\", line 251, in _compile\n    raise error, v # invalid expression\nsre_constants.error: bad character range\n", 
    "module_stdout": "", 
    "msg": "MODULE FAILURE", 
    "rc": 0
}

请帮我调试这部分代码,任何帮助都将不胜感激


Tags: nameinpyreesdevicetypeline
1条回答
网友
1楼 · 发布于 2024-06-16 09:57:45

7.2.1. Regular Expression Syntax

[ ] Some characters, like '|' or '(', are special. Special characters either stand for classes of ordinary characters, or affect how the regular expressions around them are interpreted. [ ]

The special characters are: [ ]

[] Used to indicate a set of characters.

所以您不能使用^[es-master]来匹配[es-master],因为[和{}是特殊字符。在

你需要逃离他们。在

相关问题 更多 >