/ / Como extrair padrões que correspondem a regex em java - java, regex

Como extrair padrões que correspondam a regex em java - java, regex

Estou trabalhando com regex em java. Eu tenho um arquivo que contém o seguinte padrão seguido e precedido por outro texto. O padrão:

    Bombay Garden 5995 Mowry Ave Newark, CA (510) 744-6945
Bombay Garden 172 E. 3rd Ave. San Mateo, CA (650) 548-9966
Bombay Garden 3701 El Camino Real Santa Clara, CA (408) 241-5150

Eu tenho o seguinte regex que corresponde a cada linha. A regex:

(.*?)(d{1,4})(s*w*)*(w+),(s*)(CA|AZ|NY)(s*)((?[1-9]d{2})?s*d{3}-?d{4})

Isso corresponde a uma linha, mas quero extrair o nome da rua, o estado e o número de telefone de cada uma das três ramificações usando Java.

Alguém pode me ajudar com isso?

Respostas:

1 para resposta № 1

Você extrai o conteúdo de um grupo de captura usando group() do Matcher objeto e passando a ele um número de grupo, ou seja:

  Matcher m = Pattern.compile(yourRegex).matcher(yourString)
while (m.find())
{
System.out.println(m.group(1));
System.out.println(m.group(2));
String state = m.group(6);
...
}

O grupo 0 é o padrão inteiro. O grupo 1 é o seu primeiro grupo de captura, ou seja, no seu caso m.group(6) retornará o estado.