正则表达式找不到确切的结果

问题描述 投票:0回答:1

我想识别字符串中没有函数调用的变量,例如 '结果 = someFunction(arg1, arg2) + 10'

我使用了模式 '([a-zA-Z_]\w*)(?!\s*()'

在matlab中,结果是 {'结果'} {'someFunctio'} {'arg1'} {'arg2'}

我很好奇为什么函数调用也被提取出来以及为什么它是“someFunctio”

我尝试过上部正则表达式

regex matlab
1个回答
0
投票

我认为您可以稍微简化正则表达式模式,因为您不需要负面的前瞻。此外,您还允许第一个字符为下划线,这不是有效的 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'}
© www.soinside.com 2019 - 2024. All rights reserved.