How to remove everything from string except what's inside square brackets?

I have this cell array:
{'0,11:1.03 SPEED MEASURED 1 [rpm]'}
{'0,12:1.03 SPEED MEASURED 1 [rpm]'}
{'0,13:1.03 SPEED MEASURED 1 [rpm]'}
{'0,14:1.03 SPEED MEASURED 1 [rpm]'}
{'0,11:1.06 MOTOR CURRENT [A]' }
{'0,12:1.06 MOTOR CURRENT [A]' }
{'0,13:1.06 MOTOR CURRENT [A]' }
{'0,14:1.06 MOTOR CURRENT [A]' }
{'0,11:2.13 TORQ USED REF [%]' }
{'0,12:2.13 TORQ USED REF [%]' }
{'0,13:2.13 TORQ USED REF [%]' }
{'0,14:2.13 TORQ USED REF [%]' }
{'0,11:1.08 MOTOR TORQUE [%]' }
{'0,12:1.08 MOTOR TORQUE [%]' }
{'0,13:1.08 MOTOR TORQUE [%]' }
{'0,14:1.08 MOTOR TORQUE [%]' }
{'0,11:2.10 TORQUE REF 3 [%]' }
{'0,12:2.10 TORQUE REF 3 [%]' }
{'0,13:2.10 TORQUE REF 3 [%]' }
{'0,14:2.10 TORQUE REF 3 [%]' }
How can I get the unit from between the brackets in each string, so that I'm left with the following:
{'rpm'}
{'rpm'}
{'rpm'}
{'rpm'}
{'A' }
{'A' }
...
{'%' }
Thanks!

6 Commenti

regexp this is the saviour.
Thanks! This is the command I ended up using:
regexp(headers{2}, '(?<=\[).*?(?=\])', 'match');
Thats great...this function makes me always confused......
Yeah me too. I always struggle with it, even when I'm trying to achieve something really simple (like in this case) ?
Wow, I never even knew about this function! Very intuitive and seems to work just as well as regexp. Are there any benefits to using extractBetween other than the fact that it's more easy to use for this purpose?

Accedi per commentare.

Risposte (1)

Where C is your cell array:
>> D = regexp(C,'\[(.+)\]','tokens','once')
>> D = vertcat(D{:})
D =
'rpm'
'rpm'
'rpm'
'rpm'
'A'
'A'
'A'
'A'
'%'
'%'
'%'
'%'
'%'
'%'
'%'
'%'
'%'
'%'
'%'
'%'

Categorie

Tag

Non è stata ancora inserito alcun tag.

Richiesto:

il 12 Lug 2019

Modificato:

il 12 Lug 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by