我正在尝试编写regexp来匹配嵌入在两个花括号之间的标记。例如,如果缓冲区Hello {World}
,我想从String中获取“World”标记。当我使用像\{*\}
这样的正则表达式时,eclipse会显示错误消息
无效的转义序列(有效转义序列为
\b \t \n \f \r \" \' \\
)
任何人都可以帮助我吗?我是新手使用正则表达式。
答案 0 :(得分:5)
使用此代码匹配{
和}
String str = "if buffer Hello {World}";
Pattern pt = Pattern.compile("\\{([^}]*)\\}");
Matcher m = pt.matcher(str);
if (m.find()) {
System.out.println(m.group(0));
}
答案 1 :(得分:3)
您应该能够使用{(\w*)}
的正则表达式从字符串中提取令牌,例如“{token}”。
括号()形成围绕由\w*
捕获的零个或多个单词字符的捕获组。
如果字符串匹配,则通过调用Matcher类上的group()方法从捕获组中提取实际令牌。
Pattern p = Pattern.compile("\\{(\\w*)\\}");
Matcher m = p.matcher("{some_interesting_token}");
String token = null;
if (m.matches()) {
token = m.group();
}
请注意,令牌可能是空字符串,因为正则表达式{\ w *}“将匹配”{}“。如果要匹配至少一个令牌字符,请改用{\ w +}。
答案 2 :(得分:1)
在java中使用此\\{[\\w]*\\}
使用double \ for转义字符
答案 3 :(得分:0)
你需要逃避正则表达式中的{}。只是为了在大括号之间提取所有东西,正则表达式是
\\{.\\}