Я удаляю строки из кучи файлов txt, используя регулярное выражение, используя Python; однако я столкнулся со случаем, когда иногда происходит повторное удаление, если строка содержит строку, довольно похожую на первую
s = 'market.fruit.apple'
Файл txt может содержать следующие строки
market.fruit.apple
market.fruit.apple.all
Но если я запустил
open_file = open('test.txt', 'r')
read_file = open_file.read()
r = re.compile(r"(?<!\S){0}.*(?:[\r\n]\s*)?".format(s))
read_file = r.sub('',read_file)
write_file = open('test.txt', 'w')
write_file.write(read_file)
, он удалит как market.fruit.apple
, так и market.fruit.apple.all
, когда нужно удалить только первый. Как мне этого избежать? Я попытался установить для параметра count значение 1, но это ничего не дало. Я думал сделать строковое сходство между строками и использовать другое регулярное выражение, если оно соответствует правильному условию, но я подумал, что это могут быть ненужные накладные расходы, если я увеличу это.
Изменить: исправлены некоторые опечатки в приведенном выше примере, можно воспроизвести в regex101.com/r/q7qWVh/1