gpt4 book ai didi

java - 如何删除 Java 字符串中的嵌入式大括号?

转载 作者:搜寻专家 更新时间:2023-10-31 19:29:11 25 4
gpt4 key购买 nike

我有一个 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("{*}", "");

有什么想法吗?提前致谢。

最佳答案

要匹配 {,您需要对其进行转义。因为它在正则表达式中有一些特殊的含义。因此,您需要 \\{\\}。或者您也可以将它们包含在一个字符类中。

然后要匹配它们之间的任何内容,您可以使用 .*点 (.) 匹配任何字符。而*是量词,表示匹配0个或多个

因此,您的正则表达式将是:-

\\{.*?\\}  

或:-

[{].*?[}]

请注意,我在那里使用了一个不太情愿的量词 - .*?。请注意末尾的 ?。在这种情况下,它用于匹配到第一个 }。如果您使用 .* 而不是 .*?,您的正则表达式将覆盖从第一个 { 到最后一个 } 的完整字符串,并替换所有内容。

另外,一个特殊的正则表达式元字符,在 character class 中使用时没有特殊意义 - [] 东西。这就是为什么,当你那样使用它时,你不需要逃避它们。因此,第二个正则表达式。

这看起来很简单,不是吗?好的,现在是时候通过一些教程来了解更多关于 Regular Expression 的信息了。您可以从 http://www.regular-expressions.info/tutorial.html 开始

关于java - 如何删除 Java 字符串中的嵌入式大括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14043226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com