Como você deve ter descoberto, isso não pode ser feito só com expressões regulares. Você precisa criar um método que examine as palavras uma por uma, e extraia as vogais se não ocorrer o caso de deixar alguma vogal “sozinha” (no caso da palavra “no” ou no caso da palavra “O”).
Desculpe-me perguntar, voce quer traduzir alguma frase em português para o hebraico :?: :?: :?:
A razão da pergunta, é porque sou estudante da bíblia, e faço alguns estudos por conta própria sobre hebraico.
Voltando o foco para o java, voce vai conseguir fazer o que pretende, fazendo justamente o que o nosso amigo entanglement disse, e para fazer isto, voce tem que usar um método da classe String, chamado "Split"
Na verdade, além da váriavel frase, voce terá que criar outra variável só que um vetor de Strings onde o método Split vai separar as palavras de acordo com o caracter fornecido, ou seja, separa cada palavra quando encontra o caracter fornecido.
O código fica mais ou menos assim:
import java.util.Scanner;
public class Main {
private static String frase = null;
private static String[] palavras;
public static void main(String[] args) {
frase = introduzirFrase(frase);
palavras = frase.split(" ");
frase = "";
for (int i=0; i < palavras.length; i++){
if (palavras[i].length() == 1){
frase += palavras[i].concat(" ");
} else {
frase += eliminarVogais(palavras[i]).concat(" ");
}
}
System.out.println("Output: " + frase);
}
public static String introduzirFrase(String frase){
Scanner teclado=new Scanner (System.in);
System.out.print("Introduza a frase:");
frase=teclado.nextLine();
return frase;
}
public static String eliminarVogais(String frase){
int i=0;
for(i=0; i<frase.length(); i++){
frase=frase.replaceAll("[aeiouáãéíõ]", "");
frase=frase.replaceAll("[AEIOUÁÃÉÍÕ]", "");
}
return frase;
}
}
Repare que eu acrescentei também as vogais acentuadas.>
O que o colega discorpio disse procede, mas para melhorar mais ainda, da pra usar StringBuilder na parte de concatenação de Strings, melhora violentamente a performance caso queira parsear muito texto.