Я хочу использовать одно регулярное выражение + backref-выражение, которое соответствует и заменяетрегулярное выражение замены строка: опустить запятую, если backref пуст
text = 'a,b,c'
с text = 'a,b,c,item_1'
text = ''
с text = 'item_1'
и
text = 'a'
с text = 'a,item_1'
.
Я вообще заинтересован в растворах с использованием
sed
, но и с помощью python regex.В частности, я ищу решение, которое будет использоваться с модулем lineinfileAnsible (python).
Вот то, что я до сих пор (в анзибль):
regexp: "^(text[ ]*=[ ]*')([^']*)(')"
backrefs: yes
line: '\1item_1,\2\3'
Edit:, если это возможно, регулярное выражение + backref-ех пара должна игнорировать уже существующую item_1
, то есть " замена»
text = 'item_1'
с text = 'item_1'
и
text = 'a,item_1'
с text = 'a,item_1'
и
text = 'a,d,x'
с text = 'a,item_1,x'
и т.д.
А, В и С всегда отдельные буквы, или это может быть что-нибудь? –
На практике элементы в списке могут быть реальными словами с символами подчеркивания, но для этого вопроса давайте останемся с одиночными символами. – Juve