我想从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进行测试。为方便起见,请参阅here。
提前致谢!
答案 0 :(得分:2)
为了让你的正则表达式工作,你可以先=
.gsub(/=\s+/, '=').scan(/((?<!=)\w+(?![^\[]*\]+)(?=( |,|\(|$)))/)
答案 1 :(得分:0)
你可以做的一件容易的事就是将行分成两行(在'='处)并且只在左操作数上执行你的正则表达式。
这样你就不必编写任何复杂的正则表达式。
答案 2 :(得分:0)
我的建议是将你的正则表达式分成2个表达式。正则表达式不一定总是单行。