NotePad ++ - Чому пошук ^ не працює?


16

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

Що я роблю неправильно?

Я намагаюся знайти початок нового рядка. У TextPad знайдіть "^" та переконайтеся, що регулярні вирази включені. З Notepad ++ це не робить. Просто сказано "Не знайдено".


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

1
PS. ви можете часто використовувати Extended (проти RegEx ) як вирішення для \ r і \ n - це напівмісце імітує початок рядка. Крім того, ви можете залишитись у звичайному пошуку та увімкнути Вид - Показати символ - Показати кінець рядка. Хоча вони (візуально) не відображаються у полі пошуку, якщо ви вибрали Спочатку CRLF, коли ви натискаєте CTRL + F, починається автоматичний прайм-пошук Find-field, і він із задоволенням стає багаторядковим (але не RegEx) пошуком. Це не сильно відрізняється від розширеного пошуку, але я вважаю, що це цікаво, і деякі читачі також можуть вважати його таким. (Я люблю Npp :)
Пітер.O

Чому саме ви намагаєтесь знайти початок нового рядка? Ви хочете додати щось на початку кожного рядка? Це допомогло б нам реально відповісти на питання. Якщо ви використовуєте Notepad ++ для того, щоб відійти від платного рішення, вам доведеться вивчити його примхи та обійти їх. З цим у мене не було проблем, оскільки Notepad ++ дуже хороший у багатьох інших способах.
Джошуа Нурчик

Відповіді:


25

^ і $ є обома якорями в Regex, це означає, що якщо ви хочете замінити буквальні символи ^і $вам потрібно уникнути їх, як правило, з провідним зворотним кутом ( \^і і \$).

Для пошуку першого символу використовуйте рядок ^.

Анкер для початкової лінії ( ^) - це відповідність нульової ширини, тому поєднуючи його з. знайде будь-який символ на початку рядка.

Може, ви можете пояснити, що ви насправді намагаєтесь зробити?


8

Тому що це спеціальні символи, які представляють передню ( ^) та кінець рядка ( $). Спробуйте уникнути їх за допомогою\ .

Приклади:

Матч "Кіт" на початку рядка:

^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.