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 № 1Você 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.