I have filenames from various digital cameras: DSC_1234.jpg,
CRW1234.jpg, etc. What I really want is the numeric portion of that
filename. How would I extract just that portion?
I expect it to involve the regex /\d+/, but I'm unclear how to extract a
portion of a string matching a regex.
I have filenames from various digital cameras: DSC_1234.jpg,
CRW1234.jpg, etc. What I really want is the numeric portion of that
filename. How would I extract just that portion?
I expect it to involve the regex /\d+/, but I'm unclear how to extract a
portion of a string matching a regex.
Thank you
This may be the simplest (and arguably the most ruby-esque):
str = "DSC_1234.jpg"
num = str.scan(/\d+/)[0]
Other ways to do it:
num = str.match(/\d+/)[0]
OR
num = (/\d+/).match(str)[0]
OR
num = str.scan(/\d+/) {|match| match}
OR
num = str =~ /(\d+)/ ? $1 : nil
That is,
num = if str =~ /(\d+)/
$1
else
nil
end
OR
if str =~ /\d+/
num = $~[0]
end
Some proponents of ruby have said that perl's "There is more than one way to do it," is a curse. But the same is true of ruby. However, it seems to me that most people learn reasonable idioms and common sense prevails.
I have filenames from various digital cameras: DSC_1234.jpg,
CRW1234.jpg, etc. What I really want is the numeric portion of that
filename. How would I extract just that portion?
I expect it to involve the regex /\d+/, but I'm unclear how to extract a
portion of a string matching a regex.
On 12 juin, 08:45, Matt Jones <mattjonesph...@gmail.com> wrote:
I have filenames from various digital cameras: DSC_1234.jpg,
CRW1234.jpg, etc. What I really want is the numeric portion of that
filename. How would I extract just that portion?
I expect it to involve the regex /\d+/, but I'm unclear how to extract a
portion of a string matching a regex.
- one or more non-digits
- one or more digits => because this is between parenthesis you can refer to
it with \1 later on
- something more
The digits (safely stored in \1) is all you want to keep... this assumed you
are only interested in the first sequence of numbers.
Cheers
Bas
···
On Tue, Jun 12, 2007 at 03:45:04PM +0900, Matt Jones wrote:
I have filenames from various digital cameras: DSC_1234.jpg,
CRW1234.jpg, etc. What I really want is the numeric portion of that
filename. How would I extract just that portion?
--
Bas van Gils <bas@van-gils.org>, http://www.van-gils.org
[[[ Thank you for not distributing my E-mail address ]]]
Quod est inferius est sicut quod est superius, et quod est superius est sicut
quod est inferius, ad perpetranda miracula rei unius.
I have filenames from various digital cameras: DSC_1234.jpg,
CRW1234.jpg, etc. What I really want is the numeric portion of that
filename. How would I extract just that portion?
I expect it to involve the regex /\d+/, but I'm unclear how to extract a
portion of a string matching a regex.