Create multiple sub arrays in one line!

1 view (last 30 days)
Hi everyone, I have the string bellow as input to a function
'(44) (hello) (good) ()'
the function looks for indices positions of left and right parenthesis...
open = strfind(text, '(');
close = strfind(text, ')');
after that I want to isolate everything inside the parenthesis...
I was hoping there was a fast way of doing this something like:
output = text(open:close);
but it doesn't seem to work does anyone has a clue if this is possible?!

Accepted Answer

Star Strider
Star Strider on 27 Nov 2019
Try this:
str = '(44) (hello) (good) ()';
out = regexp(str, '(?<=\()\w*(?=\))', 'match')
producing:
out =
1×3 cell array
{'44'} {'hello'} {'good'}
See the documentation on regexp (and its friends) for details.
Make appripriate changes to get the result you wannt.
  4 Comments
Francisco Dias
Francisco Dias on 27 Nov 2019
Woow this is great! thank you ;)

Sign in to comment.

More Answers (1)

Turlough Hughes
Turlough Hughes on 27 Nov 2019
Edited: Turlough Hughes on 27 Nov 2019
This is one way to go about it:
a=strsplit(text(text~=' '),{'(',')'})
output=sprintf('%s',a{:})
  1 Comment
Turlough Hughes
Turlough Hughes on 27 Nov 2019
Edited: Turlough Hughes on 27 Nov 2019
Actually, just realising you could also write:
output=text(text~=' ' | text~='(' | text~=')')

Sign in to comment.

Tags

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!