Java正则表达式和转义元字符

时间:2011-04-24 03:36:30

标签: java regex

我正在尝试编写regexp来匹配嵌入在两个花括号之间的标记。例如,如果缓冲区Hello {World},我想从String中获取“World”标记。当我使用像\{*\}这样的正则表达式时,eclipse会显示错误消息

  

无效的转义序列(有效转义序列为\b \t \n \f \r \" \' \\

任何人都可以帮助我吗?我是新手使用正则表达式。

4 个答案:

答案 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)

你需要逃避正则表达式中的{}。只是为了在大括号之间提取所有东西,正则表达式是

\\{.\\}