当前位置: 首页 > 面试题库 >

Java正则表达式在大括号之间获取数据

姚新霁
2023-03-14
问题内容

我正在寻找一个正则表达式来匹配大括号之间的文本。

{one}{two}{three}

我希望将它们分别作为单独的组one two three

我试过Pattern.compile("\\{.*?\\}");只删除第一个和最后一个大括号。


问题答案:

您需要( )围绕要捕获的内容使用捕获组。

只是为了匹配并捕获大括号之间的内容。

String s  = "{one}{two}{three}";
Pattern p = Pattern.compile("\\{([^}]*)\\}");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1));
}

输出量

one
two
three

如果要三个特定的匹配组…

String s  = "{one}{two}{three}";
Pattern p = Pattern.compile("\\{([^}]*)\\}\\{([^}]*)\\}\\{([^}]*)\\}");
Matcher m = p.matcher(s);
while (m.find()) {
  System.out.println(m.group(1) + ", " + m.group(2) + ", " + m.group(3));
}

输出量

one, two, three


 类似资料:
  • 问题内容: 不幸的是,尽管尽我所能记住,每年尝试至少一年学习一次正则表达式,但我却经常忘记,因为我很少使用它们。今年,我新年的决心是不要再尝试学习正则表达式因此,今年,为了避免让我流泪,我将把它交给Stack Overflow_ 。 我想以这种格式传递一个字符串,然后返回该字符串。有人能协助我们坚持我的新年决议吗? 问题答案: 如果您的字符串将始终是该格式,则正则表达式会显得过大: 表示以一个字符

  • 我想提取A,B,C后面的花括号里的任何东西。我写下面的代码,但它不工作。 有人能看出我什么地方不对劲吗? 我已经在Javascript中测试了正则表达式,它成功了。看这里。

  • 问题内容: 我需要解析一个日志文件并获取时间和相关的函数调用字符串,它以如下方式存储在日志文件中:{“ time”:“ 2012-09-24T03:08:50”,“ message”:“ Call( )开始”} 在其他字符串字符之间将有多个记录的时间函数调用,因此我希望使用正则表达式浏览文件并获取所有这些 我想获取包括大括号在内的整个记录​​的信息 我尝试了以下 和 我不断收到非法的重复错误,请帮

  • 问题内容: 我需要的只是括号内的内容。 问题答案: 如果您的问题确实如此简单,则不需要正则表达式:

  • 好的正则表达式问题,如何提取不在两个字符之间的字符,在本例中为括号。 我有一个字符串,例如:word1 |{word2 | word3}| word 4 我只想得到第一个和最后一个“管道”,而不是括号内的第二个。我尝试了无数次负克拉和负分组的尝试,但似乎无法让它发挥作用。 基本上,我在JavaScript拆分函数中使用这个正则表达式将其拆分为一个数组,其中包含:“word1”、“{word2|wo

  • 我需要通过不在括号中的管道拆分文本。这是示例文本 我在这里找到了这个/\ |(?![^{]*})/g:regex,提取字符串,不要在两个括号之间 现在当我想用管子分割这部分字符串时 它还选择杰森、玛丽亚和圣诞老人之间的管道,因为它们后面有一个开口支架。如果正则表达式不在任何括号中,如何将其更改为仅匹配管道。 测试字符串: 应该返回 . 应该返回