MATLAB Answers

0

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

Use regexp

Sign in to comment.

Tags

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

Azar

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')
>>matches
{'onset'}    {'pic'}    {'1'}    {'8'}

To obtain the values.

You can't use 1 and 8 as variable names.

  0 Comments

Sign in to comment.