function test()regexp('123456','\d(?@subfun($&))')endfunction subfun(s) %#ok<DEFNU>
disp(s)end
and prints the expected sequence in the command window:
>> test123456ans = 1 2 3 4 5 6
function test() function subfun(s) %#ok<DEFNU> disp(s) endregexp('123456','\d(?@subfun($&))');end
throws this error:
Error using regexpAttempt to add "matched" to a static workspace. See MATLAB Programming, Restrictions on Assigning to Variables for details.Error in test (line 5)regexp('123456','\d(?@subfun($&))');
Some experimentation showed that "matched" refers to the '&$' matched string token. I hypothesize that the "static workspace" referred to is somehow internal to regexp.
The error message's hyperlink goes to a page "Variables in Nested and Anonymous Functions", which states "If you attempt to dynamically add a variable to the workspace of an anonymous function, a nested function, or a function that contains a nested function, then MATLABĀ® issues an error of the form Attempt to add variable to a static workspace."
Given that there are no allocations within the nested function, why does this error occur? How is it possible to call a nested function (with dynamic input arguments) from a dynamic regular expression? I am using MATLAB R2012b.
Best Answer