>>>>> "ponnambalam" == ponnambalam ma <[EMAIL PROTECTED]> writes:

> DEAR FRIENDS,
>      PLEASE HELP ME REGARDING THE REGULAR EXPRESSION IN SPLIT FUNCTION

> data is : CDM210909 or   FDM210909  ( ie start with 3characters followed
> any no of numeric numbers)
> probelm is : i need to split this word into CDM  and 210909    ( split into
> characters & numbers).

> --- ie, i wish to split this word into char (first 3 characters & remaining
> )

> @res=split( / .{3}/ , $data );

If you are not attached to split(), I would recommend something like this:

$a = 'CDM210909';
$a =~ /([A-Z]{3})([0-9]+)/;
$chars = $1;
$numbers = $2;

If your string might include lowercase as well, then use:

$a =~ /([A-Za-z]{3})([0-9]+)/;

As with any regular expression, I test it out first by typing:

$ perl -de 0

at the command prompt, at which point you can just type in perl
expressions and print them out. Here is the sample session I did to
test this regex out (my input is after the DB<n> lines):

  sys_test> perl -de 0
  Default die handler restored.
  
  Loading DB routines from perl5db.pl version 1.07
  Editor support available.
  
  Enter h or `h h' for help, or `perldoc perldebug' for more help.
  
  main::(-e:1):   0
    DB<1> $a='CDE43243243'
  
    DB<2> p $a
  CDE43243243
    DB<3> $a=~/([A-Z]{3})([0-9]+)/;$b=$1;$c=$2
  
    DB<4> p $b
  CDE
    DB<5> p $c
  43243243
    DB<6> q
  sys_test>

In step <3>, you need to place the three statements on one line since
the debugger does not seem to 'remember' them if they are on separate
lines. Hope this helps.

Sarir

_______________________________________________
Perl-Unix-Users mailing list. To unsubscribe go to 
http://listserv.ActiveState.com/mailman/subscribe/perl-unix-users

Reply via email to