Expressões regulares novamente

10 respostas
Algebra

Gostaria de pegar o texto entre duas palavras ou caracteres.

Entrada: “ALUNO: AQUI PODE TER QUALQUER NOME ,”

gostaria de pegar o texto “AQUI PODE TER QUALQUER NOME”.

Meu ponta pé inicial é:

s = s.replaceAll("ALUNO: ([A-Z]+) ,", pegaTexto("$1") );

10 Respostas

A

Pode - se usar:

s = s.replaceAll("ALUNO:", "");

Abraços!

Algebra

Acho que vc não entendeu muito bem albsilva quero pegar todo o texto que estiver entre “ALUNO:” e a virgula. O texto pode ser grande e continuar depois da virgula.

A

Algo assim Algebra?

String s = "ALUNO: AQUI PODE TER QUALQUER NOME , teste testando"; String[] aux = s.split(","); s = String.valueOf(aux[0]).replaceAll("ALUNO: ", ""); System.out.println(s);

Algebra

Eu to tentando construir um padrão regex que identifica qualquer conteúdo que comece depois das palavras ALUNO ou PROFESSOR e termine antes de uma virgula ou de qualquer letra de caixa baixa, mas ainda não está dando certo:

Pattern pat = Pattern.compile ("PROFESSOR:|ALUNO:[.\n]*(.*?)[,|[a-z]]");

Pode haver quebra de linha entre as palavras por isso o [.\n]*

mas ainda não funciona muito bem, alguma sugestão.

marco_andre

Algebra, só serve com expressões regulares??

Vc poderia usar o substring juntamente com o indexOf da classe String para pegar o texto entre o “:” e a “,”

String s = "ALUNO: AQUI PODE TER QUALQUER NOME , teste testando";
//+ 2 para retirar o : e um espaço em branco
System.out.println(s.substring(s.indexOf(':') + 2, s.indexOf(',')));
A

marco_andre:
Algebra, só serve com expressões regulares??

Vc poderia usar o substring juntamente com o indexOf da classe String para pegar o texto entre o “:” e a “,”

String s = "ALUNO: AQUI PODE TER QUALQUER NOME , teste testando"; //+ 2 para retirar o : e um espaço em branco System.out.println(s.substring(s.indexOf(':') + 2, s.indexOf(',')));

Pensei nisso tbm marco, mais depois que eu vi que ele queria “termine antes de uma virgula ou de qualquer letra de caixa baixa”.
Tentei utilizar expressões regulares no substring e não consegui.

Algebra

Consegui criando 2 padrões e testando um de cada vez. :confused:

A

Acho que o que você precisava é isso:

String pattern = "AQUI:(.*), esta";       
        
       String originalContent = "AQUI: BLABLABLA, esta";
       
       String newContent = originalContent.replaceFirst(pattern, "$1");
             
       System.out.println( newContent );
marco_andre
AbelBueno:
Acho que o que você precisava é isso:
String pattern = "AQUI:(.*), esta";       
        
       String originalContent = "AQUI: BLABLABLA, esta";
       
       String newContent = originalContent.replaceFirst(pattern, "$1");
             
       System.out.println( newContent );

Acredito que isso não resolverá o problema da forma como Algebra quer.

Como ele disse anteriormente, ele procura uma solução utlizando o padrão regex para pegar o conteúdo entre os ":" e uma vírgula ou qualquer letra em caixa baixa.

Algebra se puder poste o código, no qual vc conseguiu resolver esse problema

Algebra

Tive que fazer 2 pattern

Pattern pat1 = Pattern.compile ("PROFESSOR:[.\n]*+(.*?)[,|[a-z]]");
Pattern pat2 = Pattern.compile ("ALUNO:[.\n]*+(.*?)[,|[a-z]]");

Já que isso não funcionou…

Pattern pat = Pattern.compile ("PROFESSOR:|ALUNO:[.\n]*+(.*?)[,|[a-z]]");
Criado 15 de dezembro de 2012
Ultima resposta 16 de dez. de 2012
Respostas 10
Participantes 4