Thread
:
extracting numerics from literal strings
View Single Post
#
12
Posted to microsoft.public.excel.programming
Tushar Mehta
external usenet poster
Posts: 1,071
extracting numerics from literal strings
In article ,
says...
would be optimal in terms of regexp performance. [Tangent: participate in
comp.lang.perl.misc and you'll really learn how to use regular expressions.]
Yeah, I probably should do that. At the same time, it would be far
more useful to convince people to use regular expresssions with XL in
the first place. <g
--
Regards,
Tushar Mehta, MS MVP -- Excel
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions
In article ,
says...
"Tushar Mehta" wrote...
Yet another alternative...
If you install the functions at
http://www.tmehta.com/regexp/add_code.htm
, and if the string in
question is in column A, you could use the formula
=RegExpSubstitute(A1,"[^\d]*","")
...
While this seems to work, \D it the better/safer/more Perl-compatible way to
express the complement of the character class represented by \d. It also
does more work than it should.
=RegExpSubstitute(A1,"\D+","")
would be optimal in terms of regexp performance. [Tangent: participate in
comp.lang.perl.misc and you'll really learn how to use regular expressions.]
If you have multiple numbers and want only the first set, use
=RegExpSubstitute(A3,"(^[^\d]*)(\d*)(.*$)","$2")
Better to use
=RegExpSubstitute(A3,"^\D*(\d+).*$","$1")
and to pull the last numeral substring,
=RegExpSubstitute(A3,"^.*(\d+)\D*$","$1")
and to pull the n_th numeral substring counting left to right,
=RegExpSubstitute(A3,"^(\D*(\d+)){"&(n-1)&"}\D*(\d+).*$","$3")
Reply With Quote
Tushar Mehta
View Public Profile
Find all posts by Tushar Mehta