我试着写一个正则表达式来处理一系列方程的情况,例如:
a = 2 / (1 + exp(-2*n)) - 1
a = 2 / (1 + e) - 1
a = 2 / (3*(1 + exp(-2*n))) - 1
在任何情况下,我都需要捕获外括号的内容,分别为1 + exp(-2*n)
、1+e
和3*(1 + exp(-2*n))
。
我可以写一个表达式来捕捉其中的一个,比如:\(([\w\W]*?\))\)
将完美地捕获1 + exp(-2*n)
\(([\w\W]*?)\)
将捕获1+e
\(([\w\W]*?\))\)\)
将捕获3*(1 + exp(-2*n))
但是为这么简单的东西传递三行代码看起来很愚蠢。我该如何捆绑它呢?请注意,无论如何,我将逐行处理文本(在循环中),所以你不必费心确保运算符不会贪婪地获取下一行。
编辑:也允许使用非嵌套括号:a = 2 / (1 + exp(-2*n)) - (2-5)
1条答案
按热度按时间gab6jxml1#
下面的注解代码不使用正则表达式,但在MATLAB中解析字符数组并输出包含顶级括号的项。
因此,在您的3个问题示例中,只有一组嵌套的括号,它返回最外面的括号中的术语。
在您的注解示例中,“顶级”方括号内有两个或更多(可能是嵌套的)术语,它将返回这两个术语。
其逻辑如下所示,更多细节请参见注解
输出: