SPUG: RE / Split Question

Asim Jalis asim at pair.com
Wed Jul 30 21:03:16 CDT 2003


On Wed, Jul 30, 2003 at 06:09:41PM -0700, C.J. Collier wrote:
> $ perl -e '$blob = "425 501 sttlwa01t 425 712 sttlwa01t tacwa02t 425 337
> tacwa02t"; @matches = $blob =~ /(\d+ \d+(?: \D[\w\d]+)+)/g;
> print(join("\n", @matches), "\n");'
> 425 501 sttlwa01t
> 425 712 sttlwa01t tacwa02t
> 425 337 tacwa02t
> 
> Ha.  Please, someone make it look prettier.

How about:

$ perl -e '
  $blob = "425 501 sttlwa01t 425 712 sttlwa01t tacwa02t 425 337 tacwa02t"; 
  $_ = $blob ; s/(\D) (\d)/$1\n$2/g ; print '
425 501 sttlwa01t
425 712 sttlwa01t tacwa02t
425 337 tacwa02t

If blob is coming from outside the program, the Perl could be
even slimmer, as:

$ echo "425 501 sttlwa01t 425 712 sttlwa01t tacwa02t 425 337 tacwa02t" | 
  perl -pe 's/(\D) (\d)/$1\n$2/g'

--
Asim



More information about the spug-list mailing list