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

Jack Kada
źródło
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ć?

John Weldon
źródło
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 ++.

RC.
źródło
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ć] *

Willy
źródło
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)
Lue
źródło
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).

Elias Mossholm
źródło