How to optimize a code to find postfix in a sting
조회 수: 1 (최근 30일)
이전 댓글 표시
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
Stephen23
2015년 11월 23일
편집: Stephen23
2015년 11월 23일
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.
채택된 답변
Walter Roberson
2015년 11월 23일
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
추가 답변 (1개)
Stephen23
2015년 11월 23일
편집: Stephen23
2015년 11월 23일
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
참고 항목
카테고리
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!