regexp: only strings without given end string
8 次查看(过去 30 天)
显示 更早的评论
I try to use regexp to extract strings with certain conditions within a cell array.
My conditions are:
- String starts with one of severeal given strings (e.g. 'abc', 'def' )
- There can be several substrings starting with '_' following the substring defined in 1
- 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)
0 个评论
回答(1 个)
Jyotish Robin
2018-2-8
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!