#regex #replace #notepad
#регулярное выражение #заменить #notepad
Вопрос:
Когда кто-то пытается удалить некоторые символы из начала строки, и привязанный шаблон может быть найден снова после первой замены, он снова будет удален.
Для очень простого примера, учитывая шаблон ввода 012345
, поиска ^.
и пустую замену, Notepad удалит всю строку при использовании replace all . Скорее всего, это связано с тем, что курсор все еще находится в начале строки после первой замены и, таким образом ^
, снова соответствует привязке.
Как можно гарантировать, что будет удален только фактический первый символ (в моем случае ожидаемый результат будет 12345
)?
Вы можете увидеть мой обходной путь в моем ответе, но, возможно, есть еще один хороший трюк для его достижения.
Ответ №1:
Можно сопоставить оставшуюся часть строки, записать совпадение в группу, а затем использовать эту группу в качестве замены. Шаблон в вопросе может быть скорректирован ^.(.*)
и заменен $1
.
Это заставит курсор перемещаться вперед по строке, поэтому ^
привязка не может совпадать снова.
Ответ №2:
Другим обходным путем может быть поиск:
^.(.)?
и заменить его на:
1
Я уверен, что это тема сообщения об ошибке, но на данный момент не смог ее найти. В N :
- Якоря глючат
- По Replace Allфункциональности предполагается, что замены не подлежат повторному сопоставлению. Но они есть, когда строки замены являются невидимыми / символами нулевой длины.
Позаботьтесь о них.