Мне нужно найти регулярное выражение, которое может дать мне строку между двумя разделителями (в данном случае @)
Я ранее использовал это (? <= @) (. *?) (? = @)</p>
Но проблема в этом
Вместо того, чтобы выбрать два токена, я получаю три токена из этой линии
UPDATE XYZ
SET EVENTTIME='21:01', DEADLINE='21:21',
COMPONENTNAME = '@token1@_some_update',checkthgis= '@token2@' WHERE TYPE='STATIC_UPDATE'
- token1
- _some_update ', checkthgis =
- токен 2
Я использую этот код Ansible для этого
- name: Find the tokens (@----@) in the fileString
set_fact:
tokens: "{{ fileString | regex_findall(regexp)}}"
vars:
regexp: '(?<=\@)(.*?)(?=\@)'
- name: Replace the token in the configuration files
replace:
path: "{{file}}"
regexp: "@{{token}}@"
replace: "{{ lookup('ini', '{{token}} type=properties file=/root/xyz/myfile.properties default=@{{token}}@')}}"
with_items: "{{tokens}}"
loop_control:
loop_var: token
В идеале это должно дать мне только
token1 и token2