Searching for slightly different versions of one string in another string array
2 ビュー (過去 30 日間)
古いコメントを表示
I am looking for slightly diffeerent versions of a string S in the array A. For example, the string S that I am searching for may look like this:
S='ABC12'
but A may contain various versions of it with various numbers of spaces inbetween the characters:
A={'A BC1 2 ' 'XY T67' 'AB C 12' 'RS U3 2' 'HIJ87' ' A B C1 2'}
Here elements 1, 3 & 6 should all come out as matches, no matter how many spaces between or before/after the characters.
0 件のコメント
採用された回答
dpb
2022 年 5 月 14 日
>> S='ABC12';
>> A(matches(strrep(A,' ',''),S))
ans =
1×3 cell array
{'A BC1 2 '} {'AB C 12'} {' A B C1 2'}
>>
You can get more exotic with regexp or with the newfangled pattern, but for the problem as described, I'd go for simple-minded.
3 件のコメント
dpb
2022 年 5 月 15 日
That depends on just what "STRINGn" contains in the real data set. With a fixed pattern as given, only a minor modification to the above will still work...
>> A={'A BC1 2 STRING1' 'XY T67STRING2' 'AB C 12STRING3' 'RS U3 2STRING4' 'HIJ87STRING5' ' A B C1 2STRING6'};
>> strtrim(extractBefore(A(startsWith(strrep(A,' ',''),S)),'STRING'))
ans =
1×3 cell array
{'A BC1 2'} {'AB C 12'} {'A B C1 2'}
>>
The assumption of a constant pattern probably won't stand up, so you're probably into a regular expression or using pattern.
その他の回答 (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!