extract word before and after character

6 visualizzazioni (ultimi 30 giorni)
aldo
aldo il 19 Dic 2023
Commentato: aldo il 20 Dic 2023
i want to extract string before "(" and after " " or "," (space comma)
example:
input: pilo(52),iko(54);
result:
pilo
iko
  4 Commenti
aldo
aldo il 19 Dic 2023
hi, in " () " there is only number :
(34)
(32)
(1)
aldo
aldo il 19 Dic 2023
Modificato: aldo il 20 Dic 2023
other example : (the format data is array cell)
g(1,:)={'input: pilo(52),iko(54)' }
g(2,:)={'input:iko(54)' }
g(3,:)={'input:pilo(52),iko(54)' }
g(4,:)={'input:pilo(52),iko(54),op(23)' }
in one cell there can be several words
finally I want to capture this:
in g(1,:) :
pilo 52
iko 54
in g(2,:)
iko 54
in g(3,:)
pilo 52
iko 54
in g(4,:)
pilo 52
iko 54
op 23

Accedi per commentare.

Risposta accettata

Stephen23
Stephen23 il 20 Dic 2023
Modificato: Stephen23 il 20 Dic 2023
C = {'input: pilo(52),iko(54)'; 'input:iko(54)'; 'input:pilo(52),iko(54)'; 'input:pilo(52),iko(54),op(23)'}
C = 4×1 cell array
{'input: pilo(52),iko(54)' } {'input:iko(54)' } {'input:pilo(52),iko(54)' } {'input:pilo(52),iko(54),op(23)'}
X = regexp(C,'(\w+)\((\d+)','tokens');
X = cellfun(@(c)vertcat(c{:}),X,'uni',0)
X = 4×1 cell array
{2×2 cell} {1×2 cell} {2×2 cell} {3×2 cell}
X{:}
ans = 2×2 cell array
{'pilo'} {'52'} {'iko' } {'54'}
ans = 1×2 cell array
{'iko'} {'54'}
ans = 2×2 cell array
{'pilo'} {'52'} {'iko' } {'54'}
ans = 3×2 cell array
{'pilo'} {'52'} {'iko' } {'54'} {'op' } {'23'}
However... regular expressions are very precise things. Writing them well requires understanding the precise conditions that they should match. Thus usually when someone posts a question with "simplified" text it just delays getting a working solution.
  2 Commenti
aldo
aldo il 20 Dic 2023
correct! thank you
aldo
aldo il 20 Dic 2023
Can I ask you for further help?
i find this array cell
{'pilo'} {'52'}
{'iko' } {'54'}
{'op' } {'23'}
now I have to use these found names to capture other words:
example:
xx1(pilo,ohlcvalues) and xx1(op,ohlcvalues)=false
xx2(+iko,ohlcvalues)
i want to catch xx1 and xx2
rules: (example using 'pilo')
(pilo, xxc )
(+pilo, xvs )
(-pilo, xcs )
i want to catch the name befone '('
In this example :
xx1(pilo, .. ) ======>xx1
xx2(+pilo, .. ) ======>xx2
xx3(-pilo, .. ) ======>xx3
the new cell array created must be:
{'pilo'} {'52'} {'xx1'}

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by