What you had was
Match anything, Followed by zero or more digits, Followed by anything
The first match any matched the entire string, which also satisified the second two conditions.
The * operator is greedy, in perl .*? probably would have worked, I'm not sure if that feature exists in sed. Google around for "backtracking", O'Reilly had an excellent article on how it works in Perl, which should be the same for any regex library.
Sean
On 5/9/07, Steve Moffat Steve.Moffat@ca.ibm.com wrote:
Well, ya... I guess I did the equivalent (though not so concise) method after sending the first email to roundtable...
echo APP-AM005-a | sed 's/[[:alpha:]]//g;s/[[:punct:]]//g'
I like the search inversion though Sean. Much cleaner!
So the problem I have is solved, thanks Sean. But why won't my original method work? The [[:digit:]]* should have matched all the consecutive digits shouldn't it? And then the ( ) brackets should place the match into buffer 1.
Steve
IBM Global Services sjm@ca.ibm.com (204)792-3245
----- Forwarded by Steve Moffat/CanWest/IBM on 05/09/2007 04:08 PM -----
"Sean Walberg" <sean@ertw.com> Sent by: To swalberg@gmail.co Steve Moffat/CanWest/IBM@IBMCA m cc roundtable@muug.mb.ca Subject 05/09/2007 04:05 Re: [RndTbl] Oh great RE master PM
# echo BUILD-AM005-a | sed 's/[^0-9]//g' 005
Sean
On 5/9/07, Steve Moffat <Steve.Moffat@ca.ibm.com > wrote: Hi All; I've been trying to write a sed function to return only a numeric portion of a string, but can't seem to get it working. The input is a single string of letters and numbers, with the numbers always consecutive. For example: BUILD-AM005-a
I want to get the 005 out of this string.
echo BUILD-AM005-a | sed 's/.*([[:digit:]]).*/\1/g'
will return the digit 5. This is good!
So I add an asterisk to try to match multiple digits like: echo BUILD-AM005-a | sed 's/.*([[:digit:]]*).*/\1/g'
and instead of returning 005, it doesn't match anything, so returns nothing.
Can any of you RE maters help me out?
Steve Moffat IBM Global Services sjm@ca.ibm.com (204)792-3245
Roundtable mailing list Roundtable@muug.mb.ca http://www.muug.mb.ca/mailman/listinfo/roundtable
-- Sean Walberg sean@ertw.com http://ertw.com/