[英]How to remove content inside curly braces{} along with the braces from a string in java?
[英]How to remove embedded braces in Java string?
我有一个Java字符串, 可以在一个更大的字符串中多次包含“ {
”和“ }
”对:
"My name is {name}. I am a {animal}. I like to {activity} whenever it rains."
我正在尝试编写将剥离这些对的所有实例的代码:
"My name is . I am a . I like to whenever it rains."
这些对可以出现在字符串内的任何位置 ,并且可能根本不会发生。 显然String#replaceAll(someRegex, "")
在这里是有序的,但我似乎无法使someRegex
正确:
// My best attempt.
String stripped = toStrip.replaceAll("{*}", "");
有任何想法吗? 提前致谢。
要匹配{
,你需要逃避它。 因为它在正则表达式中有一些特殊的含义。 所以,你需要\\\\{
和\\\\}
。 或者您也可以将它们包含在角色类中。
然后为了匹配它们之间的任何东西,你可以使用.*
。 dot (.)
匹配任何字符。 *
是量词,表示匹配0 or more
。
所以,你的正则表达式是: -
\\{.*?\\}
要么: -
[{].*?[}]
请注意,我在那里使用了一个不情愿的量词 - .*?
。 注意?
在末尾。 在这种情况下,它用于匹配直到第一个}
。 如果你使用.*
而不是.*?
,你的正则表达式将覆盖从第一个{
到最后}
的完整字符串,并替换所有内容。
另外,一个特殊的正则表达式元字符,在character class
使用时没有特殊含义 - 那个[]
东西。 这就是为什么,当你像这样使用它时,你不需要逃避它们。 因此第二个正则表达式。
这看起来很简单,不是吗? 好的,现在是时候通过一些教程来了解有关Regular Expression
更多信息。 您可以从http://www.regular-expressions.info/tutorial.html开始
尝试使用最简单的正则表达式\\{\\w*\\}
,如下所示:
String s = "My name is {name}. I am a {animal}. I like to {activity} "+
"whenever it rains.";
System.out.println(s.replaceAll("\\{\\w*\\}", ""));
上面的正则表达式将{}中包含的单词字符条纹化。 如果要包含某些特殊字符,请将它们与大括号内提到的\\w
一起包含在内。
replaceAll("\\\\{.*?\\\\}", "")
应该完成这项工作
String stripped = "My name is {name}. I am a {animal}. I like to {activity} whenever it rains.".replaceAll("\\{.*?\\}", "");
System.out.println(stripped);
打印My name is . I am a . I like to whenever it rains.
My name is . I am a . I like to whenever it rains.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.