我将如何替换多层括号之间的所有内容?
How would I go about replacing everything in between multiple layers of parentheses?
我希望使用 replaceAll() 方法替换 java 中一组括号之间的所有内容。我遇到的问题是在一组括号之间是另一组所以它看起来像下面这样:(这里的东西(更多的东西)和更多的东西)并使用正则表达式:\(.*?\)
doesn't工作因为它最终只替换了它的一部分,因为嵌套的括号。关于我可以用来替换所有内容的正则表达式有什么建议吗?
尝试像这样转义圆括号:
String data_message = "stuff(stuff here (more stuff) and more stuff)";
System.out.println(data_message.replaceAll("\(.*\)", ""));
Output:
stuff
如果对嵌套级别没有限制并且您使用的是 "traditional" 正则表达式,那么很遗憾,答案是 "no"(例如,请参阅此问题的已接受答案: Can regular expressions be used to match nested patterns?).
如果您可以接受有限的嵌套,或者可以让您的正则表达式语言特定...好吧,请检查该问题的其他答案:)
我希望使用 replaceAll() 方法替换 java 中一组括号之间的所有内容。我遇到的问题是在一组括号之间是另一组所以它看起来像下面这样:(这里的东西(更多的东西)和更多的东西)并使用正则表达式:\(.*?\)
doesn't工作因为它最终只替换了它的一部分,因为嵌套的括号。关于我可以用来替换所有内容的正则表达式有什么建议吗?
尝试像这样转义圆括号:
String data_message = "stuff(stuff here (more stuff) and more stuff)";
System.out.println(data_message.replaceAll("\(.*\)", ""));
Output:
stuff
如果对嵌套级别没有限制并且您使用的是 "traditional" 正则表达式,那么很遗憾,答案是 "no"(例如,请参阅此问题的已接受答案: Can regular expressions be used to match nested patterns?).
如果您可以接受有限的嵌套,或者可以让您的正则表达式语言特定...好吧,请检查该问题的其他答案:)