MATLAB: How to extract strings with varied length by regular expression

regexpregular expression

As the title, I'm trying to extract substrings from strings. But the substrings have different lengths. For example,
str1 = '2018_a_myid_the_here';
str2 = '2018_b_yourid_t_here';
What I want are 'myid' and 'yourid', which are of different length. So I used following code:
expression = '_(\w+)+_';
match = regexp(file_name, expression, 'match');
And I got the result as '_a_myid_the_' and '_b_yourid_t_'. Is there a better way to extract out 'myid' and 'yourid' directly without any further slicing?
Thank you!

Best Answer

>> regexp('2018_a_myid_the_here','(?<=^\d+_[a-z]_)[a-z]+','match')
ans =
'myid'
>> regexp('2018_b_yourid_t_here','(?<=^\d+_[a-z]_)[a-z]+','match')
ans =
'yourid'
For developing and experimenting with regular expressions you might like to download my Interactive Regular Expression tool: