Regex

8 respostas
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

8 Respostas

nel

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

Pode simplesmente aplicar um split() e buscar a posição desejada, não resolve ?

jcoelho.cs

Bom dia Nel…
Teria que ser regex… pois é dentro de uma ferramenta…
não é um source que eu possa estar alterando…

nel

jcoelho.cs:
Bom dia Nel…
Teria que ser regex… pois é dentro de uma ferramenta…
não é um source que eu possa estar alterando…

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:

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…

nel

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…

Algo como “\.” não ajudaria ?

Rodrigo_Sasaki

int index = 2; //Até o ponto que você quer que vá String pattern = "^([\\d]*\\.){"+index+"}"; O problema é que o ponto acaba vindo junto.

C

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

jcoelho.cs

Obrigado a todos…

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

Resolveu o problema…

Criado 27 de abril de 2012
Ultima resposta 27 de abr. de 2012
Respostas 8
Participantes 4