Регулярное выражение Notepad — проблема с ^ привязкой и повторяющимися шаблонами

#regex #replace #notepad

#регулярное выражение #заменить #notepad

Вопрос:

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

Для очень простого примера, учитывая шаблон ввода 012345 , поиска ^. и пустую замену, Notepad удалит всю строку при использовании replace all . Скорее всего, это связано с тем, что курсор все еще находится в начале строки после первой замены и, таким образом ^ , снова соответствует привязке.

Как можно гарантировать, что будет удален только фактический первый символ (в моем случае ожидаемый результат будет 12345 )?

Вы можете увидеть мой обходной путь в моем ответе, но, возможно, есть еще один хороший трюк для его достижения.

Ответ №1:

Можно сопоставить оставшуюся часть строки, записать совпадение в группу, а затем использовать эту группу в качестве замены. Шаблон в вопросе может быть скорректирован ^.(.*) и заменен $1 .

Это заставит курсор перемещаться вперед по строке, поэтому ^ привязка не может совпадать снова.

Ответ №2:

Другим обходным путем может быть поиск:

 ^.(.)?
  

и заменить его на:

 1
  

Я уверен, что это тема сообщения об ошибке, но на данный момент не смог ее найти. В N :

  • Якоря глючат

введите описание изображения здесь

  • По Replace Allфункциональности предполагается, что замены не подлежат повторному сопоставлению. Но они есть, когда строки замены являются невидимыми / символами нулевой длины.

введите описание изображения здесь

Позаботьтесь о них.