Caso o padrao das demais letras possa variar, crie uma string de exclusão com os demais caracteres que podem aparecer junto doque você quer.
Basta repetir o processo.
Eric_Yuzo
Uma alternativa seria remover o que não for “k” ou “i”.
s.replaceAll("[^ki]","")//substitui o que não "k" nem "i" por uma string vazia
Algebra
excelente idéia Eric Yuzo
Algebra
Eric Yuzo agora a situação é outra, vc tem idéia de como pegaria somente os “i” e “k” agrupados.
Ou seja os “i” que são visinhos de “k” ou de “i” mesmo, e o mesmo vale para “k” que são vizinhos de “i” ou “k”?
preciso de uma expressão que identifique que as strings contem a letra “k” visinho de “i” ou vizinho de “k” msm, e o mesmo vale para o “i” podendo me retornar
a sequencia correta de cada i e k exemplo de saída:
Como tem que negar um grupo de caracteres em conjunto, acho que a sugestão do evefuji é mais viável que o replaceAll. Mas teria que adaptar a expressão para pegar o “k” e o “i” associados.
Deve haver uma maneira mais simples, mas esta deve resolver:
Pattern pat = Pattern.compile ("((i+k+i*)|(k+i+k*))+");
Matcher mat = pat.matcher(s);
System.out.println(mat.find()? mat.group() : "");
() - Agrupa os componentes;
Verifica se há pelo um ou várias ocorrências;
Pode haver nenhuma, uma ou várias ocorrências;
| - expressão “OU”.