NotePad ++ - Почему поиск ^ не работает?


16

Я пытаюсь отойти от TextPad , и я просто не могу получить регулярные выражения, такие как ^и $должны быть заменены. Я определенно поставил галочку в поле регулярного выражения.

Что я делаю неправильно?

Я пытаюсь найти начало новой строки. В TextPad это найти '^' и убедиться, что регулярные выражения включены. С Notepad ++ это не так. Это просто говорит "Не найдено".


Я использовал TextPad и нашел, что эта проблема раздражает (мягко говоря). В принципе, функциональность Regex NPP является низкорослыми , когда comared для большинства других Regex-х годов. Это связано с тем, что Npp является абстракцией редактора Scintilla, который использует RegEx на основе одной строки :( - Команда Npp достаточно хорошо осведомлена об этой проблеме, но она (как ни странно) отошла на второй план (проблема времени и ресурсов). $ работает, но у них нет ^ для работы в несколько строк (пока). Я знаю это ограничение и работаю с ним (и оправдываю его). Как упоминалось ниже ^ (.) работает (Редко, я возвращаюсь к TPad или UltraEdit)
Peter.O

1
PS. вы часто можете использовать Extended (против RegEx ) в качестве обходного пути для \ r и \ n - это полуимитирует начало строки. Кроме того, кстати, вы можете остаться в обычном поиске и включить View - Show Symbol - Show End of line ... Хотя они (визуально) не отображаются в поле Find, если вы выберете Сначала CRLF, при нажатии CTRL + F включается автозаполнение поля Find, и оно вполне становится многострочным (но не RegEx) поиском. Он не сильно отличается от расширенного поиска, но я нашел его интересным, и некоторые читатели также могут найти его таким. (Я люблю Npp :)
Peter.O

Почему именно вы пытаетесь найти начало новой строки? Вы хотите добавить что-то в начале каждой строки? Это поможет нам на самом деле ответить на вопрос. Если вы используете Notepad ++, чтобы отойти от платного решения, вам придется изучить его причуды и обойти их. У меня не было проблем с этим, поскольку Notepad ++ очень хорош во многих других отношениях.
Джошуа Нурчик

Ответы:


25

^ и $ являются якорями в Regex, что означает, что если вы хотите заменить буквенные символы ^и $вам нужно их экранировать, обычно с обратной косой чертой ( \^, и \$).

Чтобы найти первый символ в строке, используйте ^.

Начальная строка anchor ( ^) - это совпадение с нулевой шириной, поэтому комбинируем его с. найдет любой символ в начале строки.

Может быть, вы можете объяснить, что вы на самом деле пытаетесь сделать?


8

Потому что это специальные символы, которые представляют front ( ^) и end of line ( $). Попробуйте избежать их с помощью \.

Примеры:

Совпадение «Кошка» в начале строки:

^Cat

Совпадение "Кошка" в конце строки:

Cat$

Подходим «Кошка» как единственное на линии:

^Cat$

Сопоставьте «$ 100» в строке:

\$100 

Вот ссылка на особенности соответствия регулярных выражений в Notepad ++.


2
Ссылка кажется (эффективно) неработающей.
Питер Мортенсен

5

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

Найти: ^ (.)

Заменить: [строка, которую вы хотите вставить] \ 1

Что это будет делать, это найти и пометить первый символ строки, вставить новую строку и поставить помеченный символ после нее.

Например, мне нужно было вставить одну кавычку в начале каждой строки:

Найти: ^ (.)

Заменить: '\ 1

Вы можете сделать то же самое для конца строки, выполнив:

Найти: (.) $

Заменить: \ 1 * [строка, которую вы хотите добавить] *


1

Я понял.

Перед

  • Albert@hotmail.com
  • Lucas@gmail.com
  • Rober_Klein@aol.com
  • Fisher@zmail.com

После

  • Альберт
  • Лукас
  • Rober_Klein
  • рыболов

Удалить после символа или текста

@ (. *) $

Удалить перед символом или текстом

^ (. *) @

dot = any character
asterisk = zero or more times

1

Вот как это сделать ...

Перед:

$_GET['id']; $_GET['nick'];

После:

htmlentities($_GET['id']); htmlentities($_GET['nick']);

Так. В поле поиска введите:

$_GET(.*])

На поле замены поставить:

htmlentities($_GET\1)

0

Проблема, кажется, была решена сейчас.

В Notepad ++ v6.9.2 (работает под Windows 7) я получаю ^(начало строки) и $(конец строки) для работы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.