Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

E se na palvra tiver a letra Z?

Pensei em comparar se a letra Z é anterior a algum numero. Se for, não queremos.

Como posso fazer isso?

Exemplo: Z98098ZZ890IZ9876RZ9876AZ9876LZ757DZ0798O Quero extrair a palavra Ziraldo

Z[\d]+ com essa regex eu pego tudo o que não quero. Mas não consegui dar um não nela (pegar o inverso)

tentei envolver essa regex em uma classe e por o ˆ no inicio mas nao consegui. [^Z[\d]+]

Como posso fazer isso?

Atenciosamente, Vinício

5 respostas

Bom dia,

Testei sua expressão regular no site http://regexr.com/ e pelo que vi era só remover os colchetes. Ficando /Z\d+/

EDIT

Desculpa, reli sua pergunta e vi que quer o inverso. Fiz um código para conseguir isso no meu trabalho:

let texto = "Z98098ZZ890IZ9876RZ9876AZ9876LZ757DZ0798O";
let regex = new RegExp("Z\d+")
texto.replace(regex, function (encontrado) {
    if (encontrado.matchs(regex))
        return "";
    else
        return encontrado;
});

No caso não tinha conseguido fazer o inverso pois a recebia como texto e poderia vir de outras formas.

Opa Vinicio, testei aqui no rubular.com com a expressão ([^Z[\d]+]) e pegou todas as letras menos o Z. Era isso que vc queria, né?

solução!

Oi Vinício,

Eu consegui uma solução que envolve positive lookahead. A ideia é que eu quero matchear a regex seguida por um grupo específico. Ou seja:

a(?=b)

matcheia o o primeiro a em abac.

Logo, uma regex que resolve o problema é

\w(?=Z[\d]+|$)

Quero matchear todas as letras seguidas por Z e alguns números ou pelo final da string.

Obrigado pela ajuda, gente. O Gabriel de Russo matou o que eu queria. Queria extrair ZIRALDO da string Z98098ZZ890IZ9876RZ9876AZ9876LZ757DZ0798O

E com o Regex do exercicio não pegavam nunca a letra Z.

Também é possível com negative lookahead

[a-zA-Z](?!\d)

Procura por uma letra e o proximo caracter não pode ser um número.

PS: acho que deveria ser adicionado esses dois comandos no curso.