Removendo o espaço em branco de um resultado de Regex

0

Eu tenho uma consulta Regex que funciona para encontrar os dados:

Corresponde a um número de 9 dígitos (não mais, não menos), com alguns sendo separados por um espaço ou - .

(?:\d{9}\s)|(\d{3}[ -]\d{3}[ -]\d{3})

O problema que tenho com os resultados é o (?:\d{9}\s) retorna o caractere de espaço à direita, ou tab, ou nova linha - mas impede que um resultado de 9 dígitos seja retornado de uma sequência numérica de 10 dígitos.

Como faço para alterar isso para remover o espaço em branco nos resultados, ou trabalhar para apenas pegar o \d{9} (apesar de não retornar 9 dígitos de um número de 10 ou mais dígitos)?

    
por warfy 30.05.2018 / 08:39

2 respostas

1

Use o limite de palavras:

(?:\d{9}\b)|(\d{3}[ -]\d{3}[ -]\d{3})
//   ___^^

De acordo com o comentário, o OP também precisa de um limite de palavras antes:

(?:\b\d{9}\b)|(\d{3}[ -]\d{3}[ -]\d{3})

e provavelmente pela outra parte da alternativa:

(?:\b\d{9}\b)|\b(\d{3}[ -]\d{3}[ -]\d{3})\b

O regex inteiro se torna:

\b(?:\d{9}|(\d{3}[ -]\d{3}[ -]\d{3}))\b
    
por 30.05.2018 / 11:21
1

Se você alterar \s para (?=\s) , o que é uma visão positiva:

(?:\d{9})(?=\s)

Parece que isso pode resolver o seu problema, mas eu não conheço todos os seus requisitos.

    
por 30.05.2018 / 09:09

Tags