Java 获取{和}之间的所有文本(源文本包含\n)

Java 获取{和}之间的所有文本(源文本包含\n),java,android,regex,Java,Android,Regex,以原文为例 { a1 a2 a3 } { b1 b2 b3 } 我需要买两件物品: a1 a2 a3 及 使用正则表达式 我尝试过这样的解决方案: 但是没有成功,因为原始文本包含“\n”字符。您可以使用以下正则表达式: \\{\\n([^\\}]+)\\n\\} 测试 如果您想要完整的代码,其中s是包含源文本的内容: Pattern p = Pattern.compile("\\{\\n([^\\}]+)\\n\\}"); Matcher m = p.matcher(s); while

以原文为例

{
a1
a2
a3
}
{
b1
b2
b3
}
我需要买两件物品:

a1
a2
a3

使用正则表达式

我尝试过这样的解决方案:


但是没有成功,因为原始文本包含“\n”字符。

您可以使用以下正则表达式:

\\{\\n([^\\}]+)\\n\\}
测试

如果您想要完整的代码,其中
s
是包含源文本的内容:

Pattern p = Pattern.compile("\\{\\n([^\\}]+)\\n\\}");
Matcher m = p.matcher(s);
while (m.find()){
    System.out.println(m.group());
}

您或许可以使用以下正则表达式:

\\{\\n([^\\}]+)\\n\\}
测试

如果您想要完整的代码,其中
s
是包含源文本的内容:

Pattern p = Pattern.compile("\\{\\n([^\\}]+)\\n\\}");
Matcher m = p.matcher(s);
while (m.find()){
    System.out.println(m.group());
}

使用
[^}]
而不是
*?
。也就是说,
\{([^}])\\}
使用
[^}]
而不是
*?
。也就是说,
\{([^}])\\}
好!我应该在Java中使用.split()函数来获得正确的结果吗?@Seraphim我在回答中添加了代码部分。我对Java语言不太熟悉(regex是一种跨许多不同语言的语言),但我认为这样就可以了。很好!我应该在Java中使用.split()函数来获得正确的结果吗?@Seraphim我在回答中添加了代码部分。我对Java语言不太熟悉(regex是一种跨许多不同语言的语言),但我认为这样就可以了。