gpt4 book ai didi

javascript - 用于 brainfuck 循环的正则表达式

转载 作者:行者123 更新时间:2023-11-30 17:23:52 25 4
gpt4 key购买 nike

我想创建一个正则表达式,它能够获取 brainfuck 代码中的每个循环。

假设给出了这个代码:

++++[>+[>,++.]<<-]++[>,.<-]

我想获取这三个循环(实际上只获取第一个就足够了):

[>+[>,++.]<<-]
[>,++.]
[,.<-]

我对正则表达式的了解很薄弱,所以我只能基础。我想到的是这个表达式:

\[[-+><.,\[\]]*]

\[ - Match the first (opening) bracket
[-+><.,\[\]]* - followed by a number of brainfuck operators
] - followed by a closing bracket

然而,这会匹配(显然)第一个开括号和最后一个右括号之间的所有内容:

[>+[>,++.]<<-]++[>,.<-]

在匹配最后一个右括号之前,它可能需要一些东西来测试循环内相同数量的左括号和右括号 - 如果这有意义的话。

也许环顾四周(我需要在 javascript 中使用它,所以我只能使用 lookaheads)是执行此操作的正确方法,但我不知道应该如何完成.

最佳答案

当我需要匹配一对方括号时(同时正确处理嵌套),我曾经写过这个

它是一个 .NET 正则表达式,它使用了并非在所有正则表达式引擎中都可用的一些功能。开始了:

\[(?>\[(?<d>)|\](?<-d>)|.?)*(?(d)(?!))\]

关于javascript - 用于 brainfuck 循环的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24653117/

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