【发布时间】:2016-01-31 22:00:53
【问题描述】:
我需要一些正则表达式帮助。
我试图做的是一个功能块解析模式。
函数如下所示:
fn name() {
contents
}
fn name2() {
contents2
}
我使用这个模式来解析它:(fn \w+\s*\(.*\)\s*{.+(?<=}))
它按预期工作,但不是只匹配第一个 },它应该是“name”函数的结尾,它一直持续到最后一个 } 基本上在整个文档中找到。有人可以帮我解决吗?
非常感谢。
【问题讨论】:
-
如果
contents可以包含n对任何n > 0的成对大括号集,那么您无法使用正则表达式正确解析它,因为它不是正则语言。 -
得到了解决方案,问题只是块解析。谢谢!
-
对我来说,这看起来像是一个词法分析模式比正则表达式更好的解决方案。
-
是的。它是一个练习正则表达式的小型转换器,我选择这种方法是因为我不熟悉词法分析的东西。
标签: python regex parsing expression