Em expressões regulares, qual é a diferença entre [: blank:], [: space:] e \ s-?

7

Eu tenho brincado rxultimamente, e eu notei que existem (pelo menos) três maneiras diferentes de indicar espaços em branco em expressões regulares.

  1. [:blank:]
  2. [:space:]
  3. \s-

Quais são as diferenças entre cada um deles? Depende do modo principal?

Malabarba
fonte
3
O que o Emacs diz? ([:space:]e\s-são iguais.)C-h i, manual ElispC-s [:space],.
Drew #
"Brincando";)
Sean Allred

Respostas:

7

A [:blank:]classe de caracteres corresponde apenas aos caracteres SPC e TAB. Os outros dois correspondem a espaço em branco com base na tabela de sintaxe ativa.

Não parece haver uma diferença entre [:space:]e \s-. Este último é um exemplo do geral \ s código padrão para correspondência com base numa classe de sintaxe.

glucas
fonte
11
Acabei de fazer um teste rápido modificando a tabela de sintaxe em um buffer para deixar caracteres adicionais em branco. Testando com regexp-buildereu posso confirmar que ambos [:space:]e \s-combinar os caracteres adicionais como espaços.
glucas