2

Я хочу заменить конец строки в строке на ';' но только в строках, которые еще не заканчиваются на ';'. Я придумал следующее, чтобы поместить в диалог замены

Find What = '[^\;]\r\n' 

Replace with = '\;\r\n'

Моя проблема заключается в том, что это также выбирает последний символ строки. Я не хочу заменять последний символ ... только возврат каретки.

Есть идеи как это исправить?

2 ответа2

2

использование

Find What: ([^\;])\r\n
Replace with: $1;\r\n

Он заменит последний символ тем же символом + ';' если это не ';'

Кроме того, в 'заменить' '\' не требуется перед ';'

2

Ваше регулярное выражение в его нынешнем виде заменит весь конец строки, поэтому лучше всего взять всю строку, проверить ее на полу, и заменить только тот раздел, который нуждается в нем (например, добавить полу).

(.*)([^\;])(\r\n)

это выражение с 3 группами захвата:

  • (.*) - первая часть строки
  • ([^\;]) - проверка пропавшего полу
  • (\r\n) - конец строки

Итак, мы можем взять первую группу, добавить полу, а затем взять последнюю группу, чтобы получить полную строку, с той лишь разницей, что сам полу.

выражение замены \1\;\3 объединит первую группу, половину и последнюю группу.

Обратите внимание, что синтаксис \# является общим для Notepad++ и некоторых других инструментов, но не универсален (многие используют $ 1, $ 2, ... $ n). не забудьте проверить документацию вашего редактора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .