Я пытаюсь изменить файл, в котором я хочу заменить некоторые скобки добавленными параметрами. Однако использование re.search
останавливается при первом успехе, и даже re.findall
не помогает.
def Modify_Brackets(file_name):
input=open(file_name,"r")
output = open("help.txt", "w+")
for line in input:
text = input.read()
matches = re.findall(r'(rule).*([0-9]+).*:.*(\[.*\])(\s*)\-\-(\s*)(\[.*\])(\s*)\-\>(\s*)(\[.*])', text)
for m in matches:
Brackets= m[5][1:-1]
ModifiedBrackets = re.sub(r'\)',',changed)',Brackets)
newline = text.replace(m[5], ModifiedBrackets)
output.write(newline)
else:
output.write(text + "")
Ввод:
<some text>
rule abc1 : [some text]
--[ f(a,b), g(x,y) ]->
[some text]
<some text>
<some text>
rule abc2 : [some text]
--[ f(x,b), g(a,y) ]->
[some text]
Текущий вывод:
<some text>
rule abc1 : [some text]
--[ f(a,b,changed), g(x,y,changed) ]->
[some text]
<some text>
<some text>
rule abc2 : [some text]
--[ f(x,b), g(a,y) ]->
[some text]
Ожидаемый результат:
<some text>
rule abc1 : [some text]
--[ f(a,b,changed), g(x,y,changed) ]->
[some text]
<some text>
<some text>
rule abc2 : [some text]
--[ f(x,b,changed), g(a,y,changed) ]->
[some text]
Как видите, он работает хорошо только для первого правила и останавливается после этого. Я хочу, чтобы это изменение ко всем правилам, присутствующим в файле.