[A-Z]*
é zero ou mais ocorrências de [A-Z]
. Há zero ocorrências de [A-Z]
em ##2
, portanto, a linha corresponde. Você provavelmente deseja um ou mais ( \{1,\}
(ou \+
com GNU grep
ou compatível) ou +
com a opção -E
habilitando EREs) ou simplesmente ##[A-Z]
como se correspondesse a ##[A-Z]
, também corresponde a ##[A-Z]+
e vice-versa.
Observe também que, exceto na C
/ POSIX
locale, o que é correspondido por [A-Z]
não é especificado e a lista de caracteres (ou até mesmo possíveis elementos de agrupamento feitos de vários caracteres) varia de acordo com a localidade e sistema operacional. Nos sistemas GNU, geralmente são apenas caracteres do script latino (incluindo Dž
ou É
), muitas vezes apenas letras maiúsculas, mas às vezes também minúsculas, incluindo as letras inglesas az (como no idioma tailandês para a Tailândia no Ubuntu 18.04 finalmente). Você obtém listas muito mais exóticas em alguns sistemas não-GNU como o Solaris. Para corresponder apenas a ABCDEFGHIJKLMNOPQRSTUVWXYZ, use [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
.