in reply to Regex problem

I'm not sure if the leading ..'s in your example are supposed to be part of the keyword or not. If not, as your example shows, try this:

#! /usr/bin/perl use strict ; use warnings ; my @str = ( 'fdjsflsdfjk foo=123 sdjflsdfjklsfj ', 'sdfhsdfsd bar=42 fkjfjklsfjs', 'zoot=23 ff ', ' nooka=9 ' ) ; foreach (@str) { /([[:alnum:]]+)=([[:digit:]]{1,3})(.*)$/ ; printf "[%s] [%s] [%s]\n", $1, $2, $3 ; }
Output:
[foo] [123] [ sdjflsdfjklsfj ] [bar] [42] [ fkjfjklsfjs] [zoot] [23] [ ff ] [nooka] [9] [ ]

Otherwise, if you want to capture the beginning of the string up to the = sign as the keyword regardless of content, maybe this is what you want:

#! /usr/bin/perl use strict ; use warnings ; my @str = ( 'fdjsflsdfjk foo=123 sdjflsdfjklsfj ', 'sdfhsdfsd bar=42 fkjfjklsfjs', 'zoot=23 ff ', ' nooka=9 ' ) ; foreach (@str) { /^([^=]+)=([[:digit:]]{1,3})(.*)$/ ; printf "[%s] [%s] [%s]\n", $1, $2, $3 ; }
Output:
[fdjsflsdfjk foo] [123] [ sdjflsdfjklsfj ] [sdfhsdfsd bar] [42] [ fkjfjklsfjs] [zoot] [23] [ ff ] [ nooka] [9] [ ]

Hope that helps. :-)


_______________
D a m n D i r t y A p e
Home Node | Email