Detectar um padrão em uma String

Pessoal, estou precisando fazer uma consulta dinâmica:

“INSERT INTO TABELA(coluna1,coluna2,coluna3) VALUES ({valor1},{valor2},{valor3})”

Essa String eu recebo do usuário e preciso substituir os valores {valor1} , {valor2} , {valor3} por exemplo

Minha dúvida é, como pego a partir dessa String fornecida, todas as ocorrências que seguem esse padrão { (A-Z | a-z | 0-9 | - | _)+ } ??

Ja tentou com Pattern e Matcher?String str = "INSERT INTO TABELA(coluna1,coluna2,coluna3) VALUES ({valor1},{valor2},{valor3})"; Pattern pattern = Pattern.compile("\\{(A-Za-z0-9_-)+\\}"); Matcher matcher = pattern.matcher(str); while(matcher.find()){ System.out.println(matcher.group()); }

Estude expressões regulares e o método replace da classe String.

Porque não usar simplesmente PreparedStatement?

To tentando aqui mas ta dando PatternSyntaxException, vou verificar

tentando o que? a minha sugestão?

se for é porque você tem que escapar os caracteres { e }, eles tem um significado especial em expressões regulares.

Mas a sugestão do pmlm pareceu muito boa, ja pensou em usar PreparedStatement para isso? pode ser válido.