В руководстве описаны специальные символы регулярного выражения ^
и $
. Как и в большинстве известных мне диалектов регулярных выражений, они соответствуют началу или концу строки. Однако я также обнаружил, что есть `
и '
доступные персонажи. Основываясь на найденном здесь объяснении , они, похоже, также соответствуют началу или концу строк. Может кто-нибудь объяснить, пожалуйста, разницу между этими специальными символами, с примером и рекомендацией о том, когда их использовать?
Когда я смотрю на значение auto-mode-alist
, они кажутся взаимозаменяемыми, чтобы соответствовать концу строк:
(...
("\\.scss\\'" . scss-mode)
("\\.ya?ml$" . yaml-mode)
...)
elisp
regular-expressions
Джексон
источник
источник
$
это, они делают ставку на имена файлов, не содержащие символов новой строки. Это , как правило , будет (очень) безопасное предположение, но это не гарантируется .\\'
Поэтому использование является лучшей практикой.Ответы:
Ваша строка может иметь встроенный символ новой строки, и в этом случае
\'
совпадает с концом строки, но$
совпадает непосредственно перед символом новой строки.Чтобы процитировать руководство Elisp , используйте узел Regexp Special :
Аналогично,
\`
совпадает с началом строки, но^
совпадает сразу после символа новой строки. Опять руководство:Поэтому для строк, которые вы обычно хотите использовать,
\`
и\'
особенно, если ваш код не может знать заранее, могут ли в строке быть символы перевода строки. Для текста в буфере вы обычно используете^
и$
.источник
^
и$
сопоставьте начало и конец строк .\`
и\'
сопоставьте начало и конец всей строки .источник
Специальные символы:
. * + ? ^ $ \ [
.Между скобками
[]
также есть следующие особенности:] - ^
Многие символы, включая backtick `и одинарные кавычки ', становятся особенными, когда они следуют за обратной косой чертой. Смотрите здесь для более подробной информации.
Есть разница между
beginning of string
, иbeginning of each line in the string
.Предоставлено Ergoemacs. Вы можете прочитать больше здесь
источник