How to optimize a code to find postfix in a sting
1 view (last 30 days)
Show older comments
pamela sulis
on 23 Nov 2015
Commented: pamela sulis
on 23 Nov 2015
Hi! I have a cell 106x1 of strings 'TrajCompact'. In every string I want to find all the prefix that are combination of (0,1,2,3,4) and consider only the postfix after this prefix My prefix are: 00,01,02,03,04,10,11,12,13,14,20,21,22,23,24,30,31,32,33,34,40,41,42,43,44
I try to do this, using the code
for k=1:size(TrajCompact,1)
matches(k) = regexp(TrajCompact(k), '\(?00.*', 'match', 'once');
end
The code run but I have to write it 25 times: one for every prefix. I want to find a compact expression so I modify the code in this way
[digits{1:2}] = ndgrid(0:4);
for k=1:106
matches(k) = regexp(TrajCompact(k), sprintf('?%d%d.*', digits{1}(k), digits{2}(k)), 'match', 'once');
end
but it doesn't make what I want, can you help me to find the error Thanks
2 Comments
Stephen23
on 23 Nov 2015
Edited: Stephen23
on 23 Nov 2015
You should try using my FEX submission make_regexp:
This creates a figure which lets you interactively create regular expressions, and alter them while it shows you the regexp outputs. It lets you change your regular expressions and immediately see what effect it has on the string matching.
Accepted Answer
Walter Roberson
on 23 Nov 2015
matches(k) = regexp(TrajCompact(k), '(?<=\(?[0-4]{2}).*', 'match', 'once');
this would strip off an optional '(' followed by a single two-digit number that is composed of the digits 0-4 only, and the rest of the string would be returned.
If this is not what you want please post a sample input line.
0 Comments
More Answers (1)
Stephen23
on 23 Nov 2015
Edited: Stephen23
on 23 Nov 2015
Your first regular expression has a backslash, but your sprint version does not. The first regular expression:
>> '\(?00.*'
ans = \(?00.*
The second regular expression:
>> sprintf('?%d%d.*', 0, 0)
ans = ?00.*
The strings look quite different to me. Perhaps you wanted this:
>> sprintf('\\(?%d%d.*', 0, 0)
ans = \(?00.*
0 Comments
See Also
Categories
Find more on Characters and Strings 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!