Find prefix and postfix in a string
12 views (last 30 days)
Show older comments
Hi! I have a cell array (106x1) of strings, I want to find a prefix in every string and, after find the postfix, count the number of different items. Example
'0(012)(02)3(26)'
'(03)2(12)04)'
'(45)(02)(35)21'
'46(15)212'
For the prefix '01' the postfix are:
'(_2)(02)3(26)'
'(_2)04'
'3'
now i want to count the items more frequent: 0, 2, _2
Can you help me? Thanks
2 Comments
Guillaume
on 18 Nov 2015
In your last two lines, I can't see any '01', so shouldn't the output be:
'(_2)(02)3(26)'
'(_2)04'
''
''
I also note that in your output you include the '(' that is before the prefix (and hence is not a postfix). Is that correct and is there any other symbol that follows this rule?
You've not explained what constitute an item, so I've no idea how you come about '0', '2', and '_2' being the most frequent. Why isn't '(' or ')' the most frequent item?
Accepted Answer
Guillaume
on 18 Nov 2015
You can't have a regex that returns the before and after of a sequence of characters without that sequence of characters, but you can do your search and replace in two steps
in = {'0(012)(02)3(26)'
'(03)2(012)04)'
'(45)(02)(35)21'
'46(15)212'};
matches = regexp(in, '\(?01.*', 'match', 'once');
out = regexprep(matches, '01', '_') %note that you could simply use strrep
As for your question about frequency, I still have no idea what constitute an item or element.
3 Comments
Guillaume
on 18 Nov 2015
Well , 0, 1, 2, 3, 4,... are individual digits. Yet, you also include _2 in your items which is made of two characters.
More Answers (0)
See Also
Categories
Find more on Data Type Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!