Regular Expression Problem , Please Help

I have no idea how to do this ..
str = '[a,b,c,d,e,[f1,f2],g],[u,v,w,[x1,x2],[y1,y2],z]';
Using this code:
regexp(str,'\[.*?(\[.*?\],[.*?\]).*?\]','tokens');
i got an answer like this:
ans =[f1,f2],g],[u,v,w,[x1,x2]
but what I want is like this:
ans = [x1,x2],[y1,y2]

3 comentarios

Matt Fig
Matt Fig el 27 de Sept. de 2012
Editada: Matt Fig el 27 de Sept. de 2012
What is the general form of the string? Will x1 and y1 be numbers? What about a, b, f1, g, u and z? I ask for the general form because right now it is not very interesting for regexp.
regexp(str,'\[x1.*\y2]','match')
Yowh
Yowh el 27 de Sept. de 2012
the string is dynamic ..
Matt Fig
Matt Fig el 28 de Sept. de 2012
That doesn't really answer the question. I showed you how to find the answer you requested, then I asked you to give the general form, including the rule for finding what you want. "The string is dynamic" tells me nothing really. Good luck.

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 27 de Sept. de 2012

0 votos

Remember, .* will match everything including [ or ] characters. You need to exclude those characters from the search if you are looking for the ] matching a [ .

1 comentario

Yowh
Yowh el 28 de Sept. de 2012
I have tried this but it doesn't work:
ans = regexp(str,'\[.*?\[[^\]]*?\].*?\]','match')

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 27 de Sept. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by