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>




Reply via email to