W wyrażeniu regularnym Emacsa \n
nie pasuje do nowego znaku linii \n
.
- Czy mam rację, że
$
dopasowuje pozycję między nowym znakiem linii a znakiem tuż przed nowym znakiem linii. np. dla łańcuchaabc\n
,$
dopasowuje pozycję pomiędzyc
i\n
? - Jakie wyrażenie regularne pasuje
\n
?
regular-expressions
StackExchange dla wszystkich
źródło
źródło
(re-search-forward "\n")
działa dobrze dla mnie.abc\r\n
zamiastabc\n
.\n
don
. mój bufor jest w trybie podstawowym. Dzieje się tak z każdym tekstem, więc dowolny tekst z nową linią lub literąn
jest działającym przykładem\r\n
dorn
Odpowiedzi:
$
dopasowuje koniec linii , a nie znak nowej linii, który pojawia się za końcem linii.C-M-s C-q C-j
.C-q
jest domyślnym powiązaniemquoted-insert
i działa również w minibuforze. To wyrażenie dosłownie szuka nowej linii:C-j
.źródło
(looking-at "^J")
Gdzie wstawiono ^ JC-q C-j
),C-q C-j
podejście zawsze działa. Ale kiedy używasz funkcji elisp, to samolooking-at
\n
działa;M-: (looking-at "\n") RET
zmieni się na prawdę, jeśli kursor znajdzie się na końcu linii (a po niej pojawi się nowa linia).regexp-builder
, możesz rozpoznać nową linię za pomocą[\n]
.[\n]
don
.Jak komentuje Dan, wyrażenie pasujące do nowej linii jest nową linią.
Możesz reprezentować nowy wiersz w cytowanym ciągu w elisp jako
"\n"
. Nie ma w tym celu specjalnej dodatkowej składni specyficznej dla wyrażeń regularnych - po prostu używasz nowego wiersza, dokładnie tak jak każdego innego literalnego znaku.Jeśli wpisujesz wyrażenie regularne interaktywnie , możesz wstawić nowy wiersz za pomocą C-qC-j, jak wskazuje odpowiedź kaushalmodi.
źródło
\n
nie pasuje do nowego znaku linii.C-q C-j
jest najbardziej niezawodnym sposobem na wpisanie nowej linii po znaku zachęty.