Robert Citek wrote:

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>




Reply via email to