regexp: only strings without given end string

4 Ansichten (letzte 30 Tage)
Jette
Jette am 29 Jan. 2018
Beantwortet: Jyotish Robin am 8 Feb. 2018
I try to use regexp to extract strings with certain conditions within a cell array.
My conditions are:
  1. String starts with one of severeal given strings (e.g. 'abc', 'def' )
  2. There can be several substrings starting with '_' following the substring defined in 1
  3. The string must not end with '_std'
Example:
header = {'abc', 'abc_b1', 'abc_b1_std', 'abc_b1_b2', 'abc_b1_b2_std', 'def_b1', 'def_b1_std', 'bcd'};
I'd like to extract:
'abc', 'abc_b1', 'abc_b1_b2', 'def_b1'
I tried the following
res = regexp( header, ['^(abc|def)(_.*)*'] );
but I don't know how to exclude the '_std' at the end.
Any ideas?
( I use MATLAB R2015b)

Antworten (1)

Jyotish Robin
Jyotish Robin am 8 Feb. 2018
Hi Jette!
Your approach seems right to me in taking into consideration the first two of your requirements. Now, to extend it to exclude the '_std' at the end, you can make use of Lookaround Assertions.
To be specific,
>>res= regexp( header, ['^(abc|def)(_.*)*(?<!std)$'], 'match' )
seems like the required command you need to use.
Hope this helps!
Thanks,
Jyotish

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by