Podręcznik opisuje regexp znaków specjalnych ^
i $
. Podobnie jak w większości dialektów wyrażeń regularnych, które znam, wydają się pasować do początku lub końca łańcucha. Jednak odkryłem również, że są dostępne `
i '
postacie. W oparciu o wyjaśnienie tutaj , wydaje się, że pasują również do początku lub końca ciągów. Czy ktoś mógłby wyjaśnić różnicę między tymi znakami specjalnymi, podając przykład i zalecenie, kiedy ich użyć?
Kiedy patrzę na wartość auto-mode-alist
, wydaje się, że są one używane zamiennie, aby dopasować koniec ciągów:
(...
("\\.scss\\'" . scss-mode)
("\\.ya?ml$" . yaml-mode)
...)
elisp
regular-expressions
Jackson
źródło
źródło
$
tak używają, korzystają z nazw plików niezawierających nowych linii. Jest to zazwyczaj będzie to (bardzo) bezpieczne założenie, ale nie jest gwarantowana . Korzystanie\\'
jest zatem najlepszą praktyką.Odpowiedzi:
Łańcuch może mieć osadzony znak nowej linii, w którym to przypadku
\'
pasuje do końca łańcucha, ale$
pasuje tuż przed znakiem nowej linii.Aby zacytować instrukcję Elisp, węzeł Regexp Special :
Podobnie,
\`
dopasowuje początek łańcucha, ale^
dopasowuje zaraz po znaku nowej linii. Ponownie instrukcja:Więc w przypadku ciągów znaków, których zwykle chcesz używać,
\`
a\'
zwłaszcza jeśli Twój kod nie może z góry wiedzieć, czy w łańcuchu mogą znajdować się znaki nowej linii. Dla tekstu w buforze zwykle używasz^
i$
.źródło
^
i$
dopasuj początek i koniec linii .\`
i\'
dopasuj początek i koniec całego łańcucha .źródło
Znaki specjalne są:
. * + ? ^ $ \ [
.Między nawiasami
[]
szczególne są również:] - ^
Wiele znaków, w tym backtick `i single quote ', stają się wyjątkowe, gdy podążają za odwrotnym ukośnikiem. Zobacz tutaj po więcej szczegółów.
Istnieje różnica między
beginning of string
, abeginning of each line in the string
.Dzięki uprzejmości Ergoemacs. Możesz przeczytać więcej tutaj
źródło