Pessoal, dúvida rápida:
Preciso saber como buscar todas as strings que comecem com a seguido de qualquer caracter e seguido de a novamente.
ou seja
aea
awa
a8a
Segue o fonte
publicstaticvoidmain(String...a){Patternp=Pattern.compile("(a.a)+");Stringmatch="ac aba a a";Matcherm=p.matcher(match);booleanb;while(b=m.find()){System.out.println(match.substring(m.start(),m.end()));}}
Porém ele nao dá o resultado que quero, eu quero apresentar três resultados.
seriam eles:
aba
a a
a a
Então… veja o seguinte, na string “ac aba a a”
existem três vezes o padrão a.a
o primeiro começa no indice 3, o segundo no indice 5, e o terceiro no indice 7… porem como o segundo resultado (indice 5) já faz parte do resultado anterior, ele acaba ignorando… gostaria de saber como não exclui-lo.
T
thingol
Ah, mas se você quer encontrar expressões regulares que se sobrepõem, você não pode usar “find” dessa maneira.
Você tem de passar um parâmetro adicional que indica de onde você tem de reiniciar a procurar:
Use os outros métodos de Matcher (dica: veja o método “start”) para determinar como é que você vai achar o caracter de onde você tem de reiniciar sua procura. Acho que você tem de usar “start() + 1”, mas é melhor você testar.
T
thingol
Não testei.
publicstaticvoidmain(String...a){Patternp=Pattern.compile("(a.a)+");Stringmatch="ac aba a a";Matcherm=p.matcher(match);intpos=0;booleanb;while(b=m.find(pos)){System.out.println(match.substring(m.start(),m.end()));pos=m.start()+1;}}