Salve pessoal…
Preciso de uma ajuda com regex…
preciso transformar uma lista de string com uma expressão regular…
a minha lista seria algo parecido com um plano de contas, (pra quem conhece contabilidade)
Exemplo:
(1.01.1)=""
(1.01.1.001)=""
(1.01.1.002)=""
(1.02.1)=""
(1.02.1.001)=""
Preciso de uma expresão regular que eu possa filtar apenas os primeiros caracteres com base no . (ponto)
exemplo: primeiros caracter até o segundo ponto (1.01)
exemplo: primeiros caracter até o tericero ponto (1.01.1)
E assim por diante…
Obrigado
nel
Abril 27, 2012, 8:56am
#2
[quote=jcoelho.cs]Salve pessoal…
Preciso de uma ajuda com regex…
preciso transformar uma lista de string com uma expressão regular…
a minha lista seria algo parecido com um plano de contas, (pra quem conhece contabilidade)
Exemplo:
(1.01.1)=""
(1.01.1.001)=""
(1.01.1.002)=""
(1.02.1)=""
(1.02.1.001)=""
Preciso de uma expresão regular que eu possa filtar apenas os primeiros caracteres com base no . (ponto)
exemplo: primeiros caracter até o segundo ponto (1.01)
exemplo: primeiros caracter até o tericero ponto (1.01.1)
E assim por diante…
Obrigado[/quote]
Pode simplesmente aplicar um split() e buscar a posição desejada, não resolve ?
Bom dia Nel…
Teria que ser regex… pois é dentro de uma ferramenta…
não é um source que eu possa estar alterando…
nel
Abril 27, 2012, 9:07am
#4
[quote=jcoelho.cs]Bom dia Nel…
Teria que ser regex… pois é dentro de uma ferramenta…
não é um source que eu possa estar alterando…
[/quote]
Estamos falando em expressão regular, é isso ? Mas cara, tu não tem um padrão ao que eu vi, as vezes você precisa o primeiro ponto, outras o segundo, outras o terceiro, foi isso que entendi. Estou enganado ? Se sim, qual é o padrão ?
Isso mesmo…
Mas vamos nos concentrar no primeiro ponto…
que horas pode vir assim também…
(10.001)
(200.001)
Para o segundo ponto é outra expressão
Acabei me adiantando e ficou complicado de entender…
nel
Abril 27, 2012, 11:37am
#6
[quote=jcoelho.cs]Isso mesmo…
Mas vamos nos concentrar no primeiro ponto…
que horas pode vir assim também…
(10.001)
(200.001)
Para o segundo ponto é outra expressão
Acabei me adiantando e ficou complicado de entender…[/quote]
Algo como “\.” não ajudaria ?
int index = 2; //Até o ponto que você quer que vá
String pattern = "^([\\d]*\\.){"+index+"}";
O problema é que o ponto acaba vindo junto.
Opa cara
String teste = "(100.101.001.110.01.10.1.0.1)=\"\"";
Pattern p = Pattern.compile(String.format("^\\((\\.?\\d+){%d}",Integer.parseInt(args[0])));
Matcher m = p.matcher(teste);
if(m.find()) System.out.println(m.group());
eu acredito que isso ja te ajudaria.
Abraço