import re
with open('input.txt', 'w') as f:
text = f.read()
#text = 'Intro [LANG::First text 1] goes on [LANG::Second text 2] and finishes.'
with open('output.txt', 'w') as f:
for match in re.findall('\[LANG::.*?\]', text):
f.write(match+'\n')
выходы:
[LANG::First text 1]
[LANG::Second text 2]
Вторая часть вопроса : , если он находит что-то вроде [: ANG :: ...], пишите только ... без скобок и тега LANG ::.
Изменить последнюю часть на:
with open('output.txt', 'w') as f:
for match in re.findall('\[.ANG::.*?\]', text):
if match.startswith('[:ANG'):
f.write(match[7:-1]+'\n')
else:
f.write(match+'\n')
Исправьте эту подстроку match[7:-1]
в соответствии с вашими потребностями.