Я редактирую кучу файлов SQL, и мне нужно удалить ссылки на дату в запросах. Однако способ написания файлов заключается в том, что логические операторы, такие как ИЛИ и И, находятся в отдельных строках, а остальная часть связанного аргумента находится в другой строке. Вот так:
OR
field.lastupdate > DATE_SUB(CURDATE(), INTERVAL 31 DAY))
AND
*some more code*
Я хочу удалить ИЛИ (и это может быть и И) до символа новой строки, в этом примере после второй скобки. Однако я хочу оставить остальную часть кода нетронутой.
Я думаю, что регулярное выражение должно быть простым, за исключением того, как игнорировать новую строку после ИЛИ, но остановиться на следующей новой строке?
Я должен отметить, что некоторые из строк даты, которые я хочу удалить, заканчиваются ";"
, которые я не хочу удалять.
Вот более полный пример, который, я надеюсь, прояснит ситуацию:
OR
x.is_deleted = 0
OR
x.lastupd > DATE_SUB(CURDATE(), INTERVAL 31 DAY))
AND
(j.active = 1
OR
j.is_deleted = 0
OR
j.lastupd > DATE_SUB(CURDATE(), INTERVAL 31 DAY));
Итак, вы видите, что я хочу сохранить первое «ИЛИ» и следующую строку,
удалите второе «ИЛИ» и следующую за ним строку.
Сохраните «И» и строку, следующую за ней, а также следующую «ИЛИ» и соответствующую строку.
А затем удалите последнюю «ИЛИ» и ее строку, оставив последнюю «;».