gpt4 book ai didi

javascript - 关于嵌套,如何在两个大括号之间找到代码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:07 25 4
gpt4 key购买 nike

我试图在两个大括号之间获取代码,但仍要注意嵌套。假设我有类似下面的内容作为输入:

while (true) {                    [A]
dothis();
if (whattype() == "A") { [B]
doA();
if (other() == "dog") { [C]
doB();
} [D]
} [E]
if (other() == "cat") { [F]
doZ();
} [G]
} [H]

我想递归循环每个嵌套层:

while
- if
- if
- if

当前函数获取字符串,使用正则表达式 (\{([\s\S]*)\}) 贪婪地查找第一个和最后一个大括号之间的代码,并再次对其执行此操作内容,直到字符串中不再有大括号。

问题是正则表达式不适用于彼此相邻的代码块。正则表达式匹配 B 到 G 之间的文本。它应该从 B 开始到 E 结束,然后是从 F 到 G 的另一个 block 。

编辑:我最终可能会使用正则表达式以外的东西。对于如何处理这个问题有什么建议吗?


对于 future 的读者:

我发现有帮助的是 this另一个 SO 问题的答案。

最佳答案

这种类型的问题无法通过消耗整个 block 的正则表达式来解决。

您所描述的确实需要对 JavaScript 语言进行完整且正确的标记化。考虑例如你可能在引用的文本中包含括号......除非你真的看到更多的好处,否则我会尝试自己做这一切而不是在合理的时间内真正成功(就像你在玩弄以了解解析器的工作原理一样) ,那么你绝对应该看看 JS 解析器中的一些现有 JS。参见示例:http://marijnhaverbeke.nl/blog/acorn.html (请注意,这是 Google 给我的第一个结果,从未尝试过该库)。

关于javascript - 关于嵌套,如何在两个大括号之间找到代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28334756/

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