O manual descreve os caracteres especiais regexp ^
e $
. Como na maioria dos dialetos de expressão regular que eu conheço, eles parecem coincidir com o início ou o fim de uma string. No entanto, também descobri que existem `
e '
caracteres disponíveis. Com base na explicação encontrada aqui , eles também parecem coincidir com o início ou o fim das strings. Alguém poderia explicar a diferença entre esses caracteres especiais, com um exemplo e uma recomendação sobre quando usá-los?
Quando olho para o valor de auto-mode-alist
, eles parecem ser usados de forma intercambiável para corresponder ao final das strings:
(...
("\\.scss\\'" . scss-mode)
("\\.ya?ml$" . yaml-mode)
...)
elisp
regular-expressions
Jackson
fonte
fonte
$
dessa maneira, estão usando nomes de arquivos que não contêm novas linhas. Isso normalmente é uma suposição (muito) segura, mas não é garantida .\\'
Portanto, usar é uma prática recomendada.Respostas:
Sua sequência pode ter um caractere de nova linha incorporado; nesse caso,
\'
corresponde ao final da sequência, mas$
antes do caractere da nova linha.Para citar o manual Elisp, nó Regexp Special :
Da mesma forma,
\`
corresponde ao início da string, mas^
corresponde logo após o caracter da nova linha. Mais uma vez, o manual:Portanto, para strings você geralmente deseja usar
\`
e\'
, especialmente se seu código não puder saber antecipadamente se pode haver caracteres de nova linha na string. Para texto em um buffer, você normalmente usa^
e$
.fonte
^
e$
coincidir com o início e o fim das linhas .\`
e\'
coincidir com o início e o fim de toda a cadeia .fonte
Caracteres especiais são:
. * + ? ^ $ \ [
.Entre parênteses
[]
, também são especiais:] - ^
Muitos caracteres, incluindo backtick `e aspas simples ', tornam-se especiais quando seguem uma barra invertida. Veja aqui para mais detalhes.
Há uma diferença entre
beginning of string
, ebeginning of each line in the string
.Cortesia de Ergoemacs. Você pode ler mais aqui
fonte