2
$\begingroup$

I have the large number of files in which the file's names follow certain pattern. for example here are names of two files

name1="event_No. 2_20140311_910_914.jpg" name2="event_No. 403_20140311_230727_230731.jpg" 

I need to extract the last two numbers of the names to get something like this (String or Expression, it does not matter):

{"910","914"} {"230727","230731"} 

I tried StringTake but it is not supporting Rules and patterns.

can any one suggest some way to do this?

Thanks

$\endgroup$

2 Answers 2

3
$\begingroup$
StringCases[{name1, name2}, DigitCharacter ..][[All, -2 ;;]] 
{{"910", "914"}, {"230727", "230731"}} 

For fun or interest, also:

With[{SR = StringReverse}, StringCases[{name1, name2} // SR, DigitCharacter .., 2] // SR ] 
{{"914", "910"}, {"230731", "230727"}} 
$\endgroup$
1
  • $\begingroup$ Thanks a lot Mr.Wizard. I am impressed with your knowledge of Mathematica. $\endgroup$ Commented Jun 6, 2014 at 2:15
2
$\begingroup$

It is really straight forward when you use StringCases.

StringCases[{name1, name2}, start__ ~~ "_" ~~ s1 : NumberString ~~ "_" ~~ s2 : NumberString ~~ ".jpg" :> {s1, s2}] (* {{{"910", "914"}}, {{"230727", "230731"}}} *) 
$\endgroup$
0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.