# How to get a desired result using regexp in matlab

86 views (last 30 days)
sachin narain on 7 May 2018
Commented: Giri on 9 May 2018
I am evaluating a matlab expression: I have an expression like this:
exp2 = '[^(]+.*[^)]+'; I have a variable str ='(1,2,3)' I want to evaluate a regexp as follows:
regexp(str,exp2,'match');
and this works and i get a result:'1,2,3'
the same goes for when str ='(1m)' result is '1m'
But when str ='(1)' the result is { }
What should i do to get a result ='1'
Kindly help me with this.Thank you in advance

Rik on 7 May 2018
Just like Stephen, I would also suggest changing your expression.
exp2 = '[^()]';
str1 ='(1,2,3)';
str2='(1)';
[start_idx,end_idx]=regexp(str1,exp2);
str1(start_idx)
[start_idx,end_idx]=regexp(str2,exp2);
str2(start_idx)

Stephen Cobeldick on 7 May 2018
Why do you need regular expressions for this? Why not just str(2:end-1) ?:
>> str = '(1,2,3)';
>> str(2:end-1)
ans = 1,2,3
>> str = '(1m)';
>> str(2:end-1)
ans = 1m
>> str = '(1)';
>> str(2:end-1)
ans = 1
Or perhaps use regexprep, which would make your regular expression simpler (because it is easier to match what you don't want):
>> str = '(1,2,3)';
>> regexprep(str,'^\(|\)\$','')
ans = 1,2,3
>> str = '(1m)';
>> regexprep(str,'^\(|\)\$','')
ans = 1m
>> str = '(1)';
>> regexprep(str,'^\(|\)\$','')
ans = 1

Giri on 7 May 2018
Hi Stephan,
Can you explain the expression please?
Stephen Cobeldick on 7 May 2018
^\( % matches parenthesis at start of string
| % or
\)\$ % matches parenthesis at end of string
Any match is replaced by '', i.e. is removed from the input.
Giri on 9 May 2018
aah ok thanks.. i did not realise that you were replacing the string. Thanks a lot Stephen.