gpt4 book ai didi

java - 处理正则表达式中的嵌套括号

转载 作者:行者123 更新时间:2023-11-29 03:15:47 26 4
gpt4 key购买 nike

我希望我的正则表达式在存在最大深度为 5 的完整嵌套括号集时匹配。我当前的代码可以正常工作,但它的时间复杂度非常高,而且长括号集需要很长时间。

^((\\((\\((\\((\\((\\(\\))*\\)(\\(\\))*)*\\))*\\))*(\\((\\((\\((\\(\\))*\\)(\\(\\))*)*\\))*\\))*\\))*)$

例子:

String s = (()());
System.out.println(s.matches(...));

-->打印 True。

String s = ()));
System.out.println(s.matches(...));

-->打印错误。

如何更改我当前的代码,使其不仅更高效而且更易于阅读?请注意,我确实希望在正则表达式中完成此操作,并且我知道使用 for 循环非常简单。谢谢!

最佳答案

如果您只想寻找最大深度 5,那么您可以使用以下正则表达式

(\((\((\((\((\(\))*\))*\))*\))*\))*

您可以在这里预览结果 http://regex101.com/r/zN1sZ2/1

作为奖励,这里有一些伪代码可以用来生成这个字符串

var s = "_", depth = 5;
while(depth > 0) {
s = s.replace("_", "(\\(_\\))*");
depth--;
}
s = s.replace("_", "");

现在,如果您的需求发生变化,只需更改一个变量 (depth) 并使用字符串 s 来执行您的正则表达式就很简单了

关于java - 处理正则表达式中的嵌套括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26741448/

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