Regex

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=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…

[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 ? :slight_smile:

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=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

Obrigado a todos…

^\((\.?\d+){%d}

Resolveu o problema…