2013-04-21 27 views
2

所以我有一些在FORTRAN中看起来像这样的行。Python /正则表达式来解析代码

call const (hsno, npoi*nsnolay, 0.0) 

我一直在使用正则表达式和python字符串函数来解析这段代码并编辑一些变量。但是像上面那样的行给我一个问题,因为字符串不会在括号中分割。

我希望它是:

[(,hsno, npoit, * nsnolay, 0.0,)]. 

但是它的作用是

[(hsno,...] 

我想它拆就一个括号,如果它后面跟着一个字和一个逗号

有没有一个简单的方法来做到这一点。

+5

你目前的正则表达式是什么? – Blender 2013-04-21 21:19:49

回答

7

匹配的括号不是常规语言。这意味着它们在数学意义上不能被正则表达式识别。大多数编程语言增加了额外的功能,使正则表达式更强大,但做这样的东西仍然很痛苦。

我建议你得到一个合适的解析器。有一个我喜欢Python的叫Ply。

+1

Ragel状态机编译器能够定位Python,非常适合从状态机创建解析器。 – Will 2013-04-21 21:30:36