4

我想从 Ruby 中的 Fortran 代码中提取符号。这些符号将具有以下模式(注意:变量类型和属性部分已被过滤掉):

a = b, c(2)       ! Match result should be "a" and "c"
d(3) = [1,2, &    ! Match result should be "d"
  3]

我尝试过的正则表达式是((?<!=)\w+(?![^\[]*\]+)(?=( |,|\(|$)))lookaround东西的。但由于 的限制lookbehind,我无法匹配“= *”来排除b

我使用 Rubular 进行测试。为了您的方便,请参见此处

提前致谢!

4

3 回答 3

2

为了使您的正则表达式工作,您可以先替换所有尾随空格=

.gsub(/=\s+/, '=').scan(/((?<!=)\w+(?![^\[]*\]+)(?=( |,|\(|$)))/)
于 2013-04-10T06:54:10.663 回答
0

您可以做的一件简单的事情是将行一分为二(在“=”处),并且只在左操作数上执行正则表达式。

这样您就不必编写任何复杂的正则表达式。

于 2013-04-10T06:50:04.097 回答
0

我的建议是将您的正则表达式分成 2 个表达式。正则表达式不必总是单行的。

于 2013-04-10T06:50:59.303 回答