我正在尝试在一行中的1个空格之后找到一个字符串,如果存在,则提取完整行并将其存储在另一个变量中。我正在使用ansible和正则表达式。如果字符串存在于其他任何地方,则不应匹配。
我尝试使用regex_match并选择但出现错误。
vars:
input : "{{ lookup('template', '{{ file }}') }}"
target: "{{ input | regex_search('^(?=.*\b INPUT\b)(?:\S+){1}(\S*.*)')}}"
错误总是出现在同一位置“(?:\ S +)”。
ERROR! Syntax Error while loading YAML.
found unknown escape character 'S'
The offending line appears to be:
input : "{{ lookup('template', '{{ file }}') }}"
target: "{{ input | regex_search('^(?=.*\b INPUT\b)(?:\S+){1}(\S*.*)')}}"
^ here
input : "{{ lookup('template', '{{ file }}') }}"
target: "{{ input | select('match', '^(?=.*\b INPUT\b)(?:\S+){1}(\S*.*)' | list | first}}"
^ here
我也尝试为/包含转义字符,但也出现错误。
ERROR! Syntax Error while loading YAML.
found unknown escape character 'S'
The offending line appears to be:
input : "{{ lookup('template', '{{ file }}') }}"
target: "{{ input | regex_search('^(?=.*/\b INPUT/\b)(?:/\S){1}(/\S*.*)')}}"
^ here
我的变量文件
-P INPUT ACCEPT
-A INPUT -s 1.1.1.1/32 -j ACCEPT
-A INPUT -s 2.2.2.2/32 -j ACCEPT
-A INPUT -s 3.3.3.3/32 -j ACCEPT
-A INPUT -j RH-Firewall
-N RH-Firewall
-A RH-Firewall -j INPUT
-A RH-Firewall -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A RH-Firewall -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A RH-Firewall-1 -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A RH-Firewall -p icmp -m icmp --icmp-type 11 -j ACCEPT
target_rule_set应该仅包含前5行。如果我为RH-Firewall进行匹配,则它应该包含第6-11行。
答案 0 :(得分:1)
您可以将<h:form id="DashboardForm">
与regex_findall
一起使用:
multiline=True
请参见regex demo。详细信息:
(?m)^\S+\s+INPUT\b.*
-由于使用了^
,因此开始一行(?m)
-1个以上非空格字符\S+
-超过1个空格\s+
-INPUT\b
整个词INPUT
-该行的其余部分。在代码中:
.*