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) ;
For example:
$ perl -e ' $_ = "[EMAIL PROTECTED]>def456&*(" ; my ($string1, $string2) = split(">", $_, 2) ; print "$string1, $string2\n" ; '
If you still want to use the RegEx, you may be able to lighten up the restrictions on the characters in the RegEx:
$ perl -e ' $_ = "[EMAIL PROTECTED]>def456&*(" ; m/(.*)>(.*)/ ; print "$1, $2\n" ; '
Is that close to what you were trying to do? In any case, let the list know what the final solution looks like.
Regards, - Robert
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>