NotePad ++ - Dlaczego znalezienie ^ nie działa?


16

Próbuję odejść od TextPada i po prostu nie mogę uzyskać wyrażeń regularnych takich jak ^i $zostać zastąpionych. Zdecydowanie zaznaczyłem pole wyrażenia regularnego.

Co ja robię źle?

Próbuję znaleźć początek nowej linii. W TextPadzie znajduje się „^” i zapewnia włączenie wyrażeń regularnych. W Notepad ++ tego nie robi. Mówi tylko „Nie znaleziono”.


Użyłem TextPada i uważam, że ten sam problem jest denerwujący (delikatnie mówiąc). Zasadniczo funkcjonalność Regp Npp jest zahamowana w porównaniu z większością innych Regexów. Wynika to z faktu, że Npp jest abstrakcją Edytora Scintilla, który korzysta z RegEx opartego na pojedynczym wierszu :( - Ekipa Npp jest całkiem świadoma tego problemu, ale (dziwnie) była na tylnym palniku (problem z czasem i zasobami). $ działa, ale nie mają jeszcze ^ pracy na wielu liniach (jeszcze). Znam to ograniczenie i pracuję z nim (i to w porządku). Jak wspomniano poniżej ^ (.) działa (Rzadko wracam do TPad lub UltraEdit)
Peter.O

1
PS. często możesz użyć Extended (vs RegEx ) jako obejścia dla \ ri \ n - to naśladuje początek linii. Nawiasem mówiąc, możesz pozostać w normalnym wyszukiwaniu i włączyć Widok - Pokaż symbol - Pokaż koniec linii. Chociaż nie pojawiają się (wizualnie) w polu Find, jeśli wybierzesz Najpierw CRLF, auto-prime Find-field uruchamia się po naciśnięciu CTRL + F i całkiem szczęśliwie staje się wyszukiwaniem wieloliniowym (ale nie RegEx). Nie różni się zbytnio od wyszukiwania rozszerzonego , ale uważam, że jest interesujący, a niektórzy czytelnicy też mogą go uznać za tak. (Uwielbiam Npp :)
Peter.O

Dlaczego dokładnie próbujesz znaleźć początek nowej linii? Czy chcesz dodać coś na początku każdej linii? To pomogłoby nam odpowiedzieć na pytanie. Jeśli używasz Notepad ++, aby odejść od płatnego rozwiązania, musisz nauczyć się jego dziwactw i obejść je. Nie miałem z tym problemu, ponieważ Notepad ++ jest bardzo dobry na wiele innych sposobów.
Joshua Nurczyk

Odpowiedzi:


25

^ i $ są zakotwiczeniami w Regex, co oznacza, że ​​jeśli chcesz zastąpić dosłowne znaki ^i $musisz uciec przed nimi, zwykle z wiodącym odwrotnym ukośnikiem ( \^, i \$).

Aby znaleźć pierwszy znak na linii, użyj ^.

Linia początkowa anchor ( ^) jest dopasowaniem o zerowej szerokości, więc łącząc ją z. znajdzie dowolny znak na początku linii.

Może możesz wyjaśnić, co tak naprawdę próbujesz zrobić?


8

Ponieważ są to znaki specjalne reprezentujące przód ( ^) i koniec linii ( $). Spróbuj uciec przed nimi za pomocą \.

Przykłady:

Dopasuj „Kot” na początku linii:

^Cat

Dopasuj „Kot” na końcu linii:

Cat$

Dopasuj „Kot” jako jedyną rzecz na linii:

^Cat$

Dopasuj „100 $” w linii:

\$100 

Oto link do szczegółów dotyczących dopasowania wyrażeń regularnych w Notepad ++.


2
Link wydaje się (skutecznie) zepsuty.
Peter Mortensen

5

Sam miałem ten sam problem. Po kilku próbach i błędach możesz osiągnąć to samo, wykonując następujące czynności:

Znajdź: ^ (.)

Zamień: [ciąg, który chcesz wstawić] \ 1

Będzie to zlokalizować i oznaczyć pierwszy znak linii, wstawić nowy ciąg i umieścić znak po nim.

Na przykład musiałem wstawić pojedynczy cytat na początku każdej linii:

Znajdź: ^ (.)

Zamień: „\ 1

Możesz zrobić to samo dla końca linii, wykonując:

Znajdź: (.) $

Zamień: \ 1 * [ciąg, który chcesz dołączyć] *


1

Mam to.

Przed

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

Po

  • Albert
  • Lucas
  • Rober_Klein
  • Rybak

Usuń po znaku lub tekście

@ (. *) $

Usuń przed znakiem lub tekstem

^ (. *) @

dot = any character
asterisk = zero or more times

1

Oto jak to zrobić...

Przed:

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

Po:

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

Więc. W polu wyszukiwania wpisz:

$_GET(.*])

W polu zamień wpisz:

htmlentities($_GET\1)

0

Wydaje się, że problem został już rozwiązany.

W Notepad ++ v6.9.2 (działającym pod Windows 7) ^uruchamiam zarówno (początek linii), jak i $(koniec linii).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.