Expressão regular em Java e meta-caracteres de escape

Eu estou tentando escrever regexp para token de correspondência incorporado entre duas chaves. Por exemplo, se o buffer Hello {World} , eu quero obter o token “World” de String. Quando eu uso o regexp como \{*\} eclipse mostra uma mensagem de erro como

Sequência de escape inválida (as válidas são \b \t \n \f \r \" \' \\ )

alguém pode me ajudar por favor? Eu sou novo em usar expressões regulares.

Você deve conseguir extrair o token de uma string como “{token}” usando um regexp de {(\w*)} . Os parênteses () formam um grupo de captura em torno dos zero ou mais caracteres de palavra capturados por \w* . Se a cadeia corresponder, extraia o token real do grupo de captura chamando o método group () na class Matcher.

 Pattern p = Pattern.compile("\\{(\\w*)\\}"); Matcher m = p.matcher("{some_interesting_token}"); String token = null; if (m.matches()) { token = m.group(); } 

Observe que o token pode ser uma string vazia porque a regex {\ w *} “corresponderá” a {} “. Se você deseja corresponder em pelo menos um caractere de token, use {\ w +}.

Use este código para corresponder a string entre { e }

 String str = "if buffer Hello {World}"; Pattern pt = Pattern.compile("\\{([^}]*)\\}"); Matcher m = pt.matcher(str); if (m.find()) { System.out.println(m.group(0)); } 

tente isto \\{[\\w]*\\} em java use double \ para caracteres de escape

Você precisa escaping do {} no Regex. Apenas para extrair tudo entre chaves, o regex é

 \\{.\\}