On Saturday, Oct 30, 2004, at 20:52 US/Central, John W. Krahn wrote:
[EMAIL PROTECTED] wrote:
I have to match patterns of the format string1>string2 where the strings 1 & 2 can contain alphabets,numbers and spaces. The string are separated by '>' sign. I wrote the following code for this. if(/([a-z]*[A-Z]*[0-9]*[\s]*)>([a-z]*[A-Z]*[\s]*[0-9]*)/g) { $string1 = $1; $string2 = $2; } This picks up only the first character in string 2 whereas I want everything till the end of the $_ to be in the string. $_ is terminated by \n. I cannot understand what I am missing in the regular expression.
my ( $string1, $string2 ) = /^([[:alnum:][:blank:]]*)>([[:alnum:][:blank:]]*)$/
How married are you to using a regular expression? An alternative may be to use split:
my ($string1, $string2) = split(">", $_, 2) ;
That is still using a regular expression. (The first argument to split() *IS* a regular expression or will be evaluated as a regular expression.) By your logic, if I change my expression to this I will not be using a regular expression:
my ( $string1, $string2 ) = $_ =~ '^([[:alnum:][:blank:]]*)>([[:alnum:][:blank:]]*)$'
Also, using split() does not restrict the input to only alphanumeric and space characters as the OP requested.
John -- use Perl; program fulfillment
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>