regexp question (-.- 4 word minimum)

I have a string thats goes like this:
055451051 (/document name/folder/file name)
I want a simple regexp that will give me the name between the third / to the ). I tried:
regexp(str, '/(?<name>\w*))', 'names')
but it keeps returning a 0x0 struct. I can get it if I use split on the string using '/' as a delimeter. But my file name come out like 'File name)' and has the parentheses on the end. I can get rid of it but I'm thinking that there's an easier way for me to get whats between the / and ).

1 commentaire

Sean de Wolski
Sean de Wolski le 18 Sep 2012
+1 Let's wait until the regexp masters wake up!

Connectez-vous pour commenter.

 Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 18 Sep 2012
Modifié(e) : Azzi Abdelmalek le 18 Sep 2012

2 votes

s='055451051 (/document name/folder/file name)'
out=s(max(strfind(s,'/'))+1:end-1)
in the above example the third is the last, if they are more then 3 /. then
s='055451051 (/document name/folder/file name)'
idx=strfind(s,'/')
out=s(idx(3)+1:end-1)

Plus de réponses (1)

Matt Tearle
Matt Tearle le 18 Sep 2012

4 votes

I know you've already got it working, but regexp challenges are always fun. This seems to work...
x = regexp(str,'/([\w\s]*?))','tokens')
Match any number of characters and spaces, but only as many as necessary, between a / and a ).

1 commentaire

Sean de Wolski
Sean de Wolski le 18 Sep 2012
regexp challenges always make me feel dumb and inadequate...
Thanks for posting it!

Connectez-vous pour commenter.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by