2009/12/19 Osvaldo Kussama <[email protected]>:
> 2009/12/18 Tarcísio Sassara <[email protected]>:
>> Estou tentando pegar todas as ocorrências dentro de um padrão e está
>> complicado.
>>
>> São palavras limitadas nos dois lados com um hífen "-".
>>
>> Tentei usar desta forma a função regexp_matches():
>>
>> select regexp_matches('-MARIA- -JOAO- -PEDRO-', '-(.*)-')
>>
>> Esperando retornar: {"MARIA", "JOAO", "PEDRO"}
>>
>> Mas estou recebendo {"MARIA- -JOAO- -PEDRO"}
>>
>> Isso porque:
>> O primeiro traço da minha expressão está casando com o primeiro traço da
>> string.
>> O ultimo traço está casando com o ultimo da string.
>>
>> Esperava casar com a primeira ocorrência logo
>> após a primeira palavra MARIA e assim ir construindo o vetor com os nomes.
>>
>
>
> Da forma abaixo o primeiro e último elemntos do array são strings de
> comprimento zero:
>
> bdteste=# select regexp_split_to_array('-MARIA- -JOAO- -PEDRO-', E'-( -)?');
> regexp_split_to_array
> --------------------------
> {"",MARIA,JOAO,PEDRO,""}
> (1 registro)
>
> Uma possível maneira de evitar isso seria eliminar o '-' do início e
> fim antes de tratar:
>
> bdteste=# select regexp_split_to_array(regexp_replace('-MARIA- -JOAO-
> -PEDRO-','^-(.*)-$',E'\\1'), E'- -');
> regexp_split_to_array
> -----------------------
> {MARIA,JOAO,PEDRO}
> (1 registro)
>
> Deve existir uma maneira mais elegante.
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
Muito obrigado!
O comportamento que gostaria é exatamente o mesmo do segundo exemplo:
select regexp_split_to_array(regexp_replace('-MARIA- -JOAO-
-PEDRO-','^-(.*)-$',E'\\1'), E'- -');
Estava usando regexp_matches, não funcionaria.
Perdi muito tempo nas palavras e não no delimitador.
Deveria ter estudado a string e encontrado o delimitar que separa as
palavras e usar a função regexp_split_to_array.
--
Tarcisio F. Sassara
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral