Я хотел бы иметь возможность искать строку по различным словам, когда я найду одно, я хочу разбить строку в этой точке на 3 части (слева, совпадение, справа), сопоставленный текст будет исключен, и процесс будет продолжен с новой строки left + right.
Теперь, когда все мои совпадения сделаны, мне нужно повернуть процесс вспять, вставив совпадающие слова (или их замену) в тот момент, когда они были удалены. Я ни разу не нашел то, что хотел, ни в одном из своих поисков, поэтому я подумал, что я бы попросил ввода здесь для SO.
Пожалуйста, дайте мне знать, если этот вопрос требует дальнейшего описания.
Кстати, в настоящий момент у меня очень плохой алгоритм, который заменяет сопоставленный текст уникальным строковым токеном, а затем заменяет токены заменяющим текстом для соответствующего совпадения после того, как все совпадения были выполнены.
Это цель:
one two three four five six
соответствует «три» заменить на foo (помните, что мы нашли три, и где мы его нашли)
one two four five six
|
three
сопоставить "два четыре" и не допустить совпадения с ним (отредактировано для ясности)
one five six
|
two four
|
three
на данный момент вы не можете соответствовать, например, «один два»
все совпадения были найдены, теперь поместите их замены (в обратном порядке)
one two four five six
|
three
one two foo four five six
Какой смысл? Предотвращение совпадения текста замены одного совпадения с другим шаблоном. (все шаблоны запускаются одновременно и в одинаковом порядке для каждой обрабатываемой строки)
Я не уверен, что язык имеет значение, но я использую Lua в этом случае.
Я попробую перефразировать, у меня есть список шаблонов, которые я хочу найти в данной строке, если я найду один, я хочу удалить эту часть строки, чтобы она не соответствовала чему-либо еще, но я хочу отследите, где я его нашел, чтобы я мог вставить туда текст замены, как только я закончу, пытаясь сопоставить мой список шаблонов
Вот связанный вопрос:
Shell script - поиск и замена текста в нескольких файлах с использованием списка строк