我想识别字符串中没有函数调用的变量,例如 '结果 = someFunction(arg1, arg2) + 10'
我使用了模式 '([a-zA-Z_]\w*)(?!\s*()'
在matlab中,结果是 {'结果'} {'someFunctio'} {'arg1'} {'arg2'}
我很好奇为什么函数调用也被提取出来以及为什么它是“someFunctio”
我尝试过上部正则表达式
我认为您可以稍微简化正则表达式模式,因为您不需要负面的前瞻。此外,您还允许第一个字符为下划线,这不是有效的 MATLAB 变量名称。相反,你可以这样做
'[a-zA-Z][a-zA-Z0-9_]*'
即以一个字母开头,后面可以跟字母、数字或下划线。
str = 'result = someFunction(arg1, arg2) + 10';
regexp( str, '[a-zA-Z][a-zA-Z0-9_]*', 'match' )
ans =
1×4 cell array
{'result'} {'someFunction'} {'arg1'} {'arg2'}