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:
Output:#! /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 ; }
[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:
Output:#! /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 ; }
[fdjsflsdfjk foo] [123] [ sdjflsdfjklsfj ] [sdfhsdfsd bar] [42] [ fkjfjklsfjs] [zoot] [23] [ ff ] [ nooka] [9] [ ]
Hope that helps. :-)
In reply to Re: Regex problem
by DamnDirtyApe
in thread Regex problem
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |