MATLAB Answers


Extract Variables from mixed string

Asked by Azar Nejad on 12 Aug 2018
Latest activity Commented on by Azar Nejad on 12 Aug 2018
Hi all,
In this string
'# Message: onset_pic1_8.png'
how can I read 'onset', 'pic', '1', '8' in four variables?

  1 Comment

on 12 Aug 2018
Use regexp

Sign in to comment.


2 Answers

Answer by Walter Roberson
on 12 Aug 2018
 Accepted Answer

S = '# Message: onset_pic1_8.png';
parts = regexp(S, '(?<name1>[A-Za-z]+)_(?<name2>[A-Za-z]+)(?<num1>\d+)_(?<num2>\d+)', 'names')
parts =
struct with fields:
name1: 'onset'
name2: 'pic'
num1: '1'
num2: '8'
I coded to permit uppercase as well as lowercase, but I did assume that the alphabetic parts remain alphabetic and the numeric parts remain numeric.

  1 Comment

This works great many thanks

Sign in to comment.

Answer by Paolo
on 12 Aug 2018
Edited by Paolo
on 12 Aug 2018

You can use:
mystring = '# Message: onset_pic1_8.png';
matches = regexp(mystring,'\d|[a-z]+(?=_|\d)','match')
{'onset'} {'pic'} {'1'} {'8'}
To obtain the values.
You can't use 1 and 8 as variable names.


Sign in to comment.