regexp question (-.- 4 word minimum)

1 Ansicht (letzte 30 Tage)
Lucas
Lucas am 18 Sep. 2012
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 Kommentar
Sean de Wolski
Sean de Wolski am 18 Sep. 2012
+1 Let's wait until the regexp masters wake up!

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 18 Sep. 2012
Bearbeitet: Azzi Abdelmalek am 18 Sep. 2012
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)

Weitere Antworten (1)

Matt Tearle
Matt Tearle am 18 Sep. 2012
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 Kommentar
Sean de Wolski
Sean de Wolski am 18 Sep. 2012
regexp challenges always make me feel dumb and inadequate...
Thanks for posting it!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Desktop finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by