correctly split with multiple under score
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sheikh Omar Bah
am 5 Jan. 2023
Kommentiert: Sheikh Omar Bah
am 6 Jan. 2023
I have a cell array with several underscore. I was wondering how to correctly split the string when you have underscores. My input looks like this:
(a) MK_0334_300151IT0005274805/MD_01082027_3_103 I want only 300151IT0005274805
(b) MK_0334_700720ES01653860_1_103 . I want only 700720ES01653860_1
© CAB001_0578_SK09 1100 0000 i want SK09 1100 0000.
(d) CR_07_C_59163230 i want only C_5916323
i have tried to split the data using : regexp({my_data}, '_', 'split'); then selecting the cell 3 and then split it using
regexp({cell 3}, '/MD', 'split');. however, that doensn't work for (b) and (d) data type.
4 Kommentare
the cyclist
am 5 Jan. 2023
The hard part is not writing the MATLAB code. The hard part is understanding what single "rule" or logic is that results in what you want.
Tell us the rule.
Adam Danz
am 5 Jan. 2023
To illustrate what others have mentioned above, explain why you don't want to return "SK09 1100" in your 3rd example or why you don't want to return "07" in your 4th example?
Akzeptierte Antwort
Walter Roberson
am 5 Jan. 2023
S = {'MK_0334_300151IT0005274805/MD_01082027_3_103', 'MK_0334_700720ES01653860_1_103', 'CAB001_0578_SK09 1100 0000', 'CR_07_C_59163230' }
regexp(S, '(?<=^[^_]+_[^_]+_)[^/_]+(_[^/_]+)?', 'match', 'once')
The rules used:
- discard up to and including the second _
- scan forward from there, stopping just before the first / or the second _ if present
2 Kommentare
the cyclist
am 5 Jan. 2023
Using the Roberson Clairvoyance Toolbox™ again, I see. Still waiting on the public beta for that.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!