Regular Expressions using regexp

Hello, I have some problem with understanding regexp expression
I have some names: ["T_24_UZK500.txt"; "FWD_T80_UZK500.txt"; "T80_UZK700.txt"]
how can I get numbers after "T" and after "UZK"?
I need a rule that will describe only the numbers after the designated patterns.

2 Comments

Are "T" and "UZK" the only possible letters in the names?
Eduard Mazur
Eduard Mazur on 10 May 2019
Edited: Eduard Mazur on 10 May 2019
It's variable symbols which are defined earlier.
I mean, I have filenames (string) and patterns (variable inside this names). With this information I need extract numerical vallues after variables..

Sign in to comment.

 Accepted Answer

Stephen23
Stephen23 on 10 May 2019
Edited: Stephen23 on 10 May 2019
Matching only integer numbers after 'UZK' or 'T_' (it is unclear in your question if the underscore is permitted or not, but the regular expression below is easy to adapt):
>> S = {'T_24_UZK500.txt';'FWD_T80_UZK500.txt';'T80_UZK700.txt'};
>> C = regexp(S,'(?<=(T_?|UZK))\d+','match');
>> C{:}
ans =
'24' '500'
ans =
'80' '500'
ans =
'80' '700'
Or simply by matching any integer numbers:
>> C = regexp(S,'\d+','match');
>> C{:}
ans =
'24' '500'
ans =
'80' '500'
ans =
'80' '700'

4 Comments

Eduard Mazur
Eduard Mazur on 10 May 2019
Edited: Eduard Mazur on 10 May 2019
Thank you Stephen for solution,
it's working good,
but can we turn 'T' and 'UZK' inside in a variable?
I want to try it with dynamic field names..
Small change from Stephen's solution: here you can list the potential patterns and the expression will be created according to your list. Also, underscores are removed ahead of time.
S = {'T_24_UZK500.txt';'FWD_T80_UZK500.txt';'T80_UZK700.txt'};
patterns = {'T', 'UZK'};
exp = ['(?<=(', strjoin(patterns,'|') ,'))\d+'];
% Remove all underscores (if any)
S = strrep(S, '_', '');
C = regexp(S, exp, 'match'); % use regexpi() to ignore case
Thanks for your helping!
This solution fit for me.
Using exp as a variable name is not a good idea it would thwart the inbuilt function exp()

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2018b

Asked:

on 10 May 2019

Edited:

on 10 May 2019

Community Treasure Hunt

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

Start Hunting!