Qual é a diferença entre [-az] e [az] na expressão regular?

0

Qual é a diferença entre [ -az] e [az] na expressão regular? Qual é o primeiro significado negativo em [ -az]?

Do padrão /etc/adduser.conf(por exemplo):

#check user and group names also against this regular expression.`
#NAME_REGEX="^[a-z][-a-z0-9_]*\$" 
analfabeto
fonte

Respostas:

2

O hífen tem apenas um significado especial quando não é o primeiro ou o último caractere em uma classe de caracteres entre colchetes.

[a-z]corresponde a todas as letras minúsculas ASCII de aa z. [-a-z]corresponde a todas as letras minúsculas ASCII de apara z e o hífen -.

Isso está documentado na documentação do Perl :

Dentro de uma lista, o caractere "-" especifica um intervalo de caracteres, para que az represente todos os caracteres entre "a" e "z", inclusive. Se você deseja que "-" ou "]" seja membro de uma classe, coloque-o no início da lista (possivelmente após um "^") ou escape com uma barra invertida. "-" também é considerado literalmente quando está no final da lista, pouco antes do fechamento "]".

cg909
fonte
0

O menos no começo é usado para incluir o caractere menos literal no grupo. Também pode estar no final do grupo. Comparar:

$ echo abc- | grep [w-x]

$ echo abc- | grep [w-x-]
abc-
$ echo abc- | grep [-w-x]
abc-

Quando não está no começo ou no fim, sua função é descrever um intervalo, como em w-x.

Tomasz
fonte