使用python"regex"获取括号中的字符串



我想从带有复杂圆括号的字符串中获取圆括号内的字符串。

此外,括号内字符串中的括号是正确配对的。

例如,对于输入abc[a[12] + b[1] * (12 + 13)] = efg[14]

如果请求是这样来的,abc[<Answer string>]

在这种情况下,<Answer string>既不是a[12,也不是a[12] + b[1,也不是a[12] + b[1] * (12 + 13)] = efg[14,而是a[12] + b[1] * (12 + 13)


这个问题是为了修改python代码而提出的。我加了一个我用过的例子。

输入

self._vars[os.path.basename(b)[:-4]] = nn.Parameter(v, requires_grad=requires_grad)

输出

setattr(self, os.path.basename(b)[:-4], nn.Parameter(v, requires_grad=requires_grad))

您可以尝试以下操作:

import re
string = 'abc[a[12] + b[1] * (12 + 13)]'
match = re.findall('[(.+)]', string)
print(match[0])

输出:

a[12] + b[1] * (12 + 13)

这里,[(.+)]匹配外部方括号之间的所有内容。

编辑:

要从输入abc[a[12] + b[1] * (12 + 13)] = efg[14]匹配a[12] + b[1] * (12 + 13),可以使用正则表达式[(.+)] =[(.+)](注意后者末尾的空格(。

这个想法是提取模式方括号内的所有内容"blah[…]=blah",因此,您可以尝试以下regex。

包含括号(.+(的组与任意数量的字符匹配一次或多次。括号控制在匹配之后返回字符串的哪些部分

import re
input = 'abc[a[12] + b[1] * (12 + 13)] = efg[14]'
output = re.findall('[(.+)] =', input)
for e in output:    #output is a list
print(e)

输出:

a[12] + b[1] * (12 + 13)

相关内容

  • 没有找到相关文章

最新更新