Try the following:
Replace
( $valueforvar2 ) = $mystring =~ m/var2=(.+)[::]/;
With
( $valueforvar2 ) = ("::" . $mystring . "::") =~ m/::var2=(.+?)::/;
This way you won't accidentally match altvar2=xyz as well!
Curtis
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Bill
Stennett - compuserve
Sent: Thursday, June 15, 2006 8:43 AM
To: activeperl mailing list
Subject: regex to parse name=value pairs from a string
Hi All,
I have a string formatted like this:
my $mystring = 'var1=123::var2=abc456::var3=10.99::var4=def';
What I need to do is to be able to extract name=value. I cannot be sure
where in the list a any value will occur so to extract a value for
'var2'
from the above example would require matching either:
'::var2=abc456::'
or
'var2=abc456::'
or
'::var2=abc456'
Can anyone suggest a regex to do this?
I've been trying things like:
( $valueforvar2 ) = $mystring =~ m/var2=(.+)[::]/;
but this only works if 'var2' is not last in the string. It also
generqate a warning as follows: "POSIX syntax [: :] belongs inside
character classes in regex; marked by <-- HERE in m/var2=(.+)[::] <--
HERE / at Untitled line...
Any suggestions appreciated.
Bill
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs