in reply to Help with regex, how to get the largest integer in a string?
BTW, to be a bit more complex, is there any way I can get the text before each integer using $'?
Here's an attempt at the last part of your question..
This solution uses split. By putting brackets around the regex, we can get it to return pairs of values - the integers and preceeding text.
#!/usr/bin/perl use warnings; use strict; use List::Util; sub get_text_and_ints { my @pairs = split(/([+-]?\d+)/); my @text = (); my @integers = (); while (@pairs) { push (@text, shift (@pairs)); push (@integers, shift (@pairs)) if (@pairs); } return (\@text, \@integers); } # # Testing # foreach (<DATA>) { chomp; my ($text,$ints) = get_text_and_ints($_); my $max_int = List::Util::max (@$ints); print "/$_/ - has ".(defined $max_int? "maximum of $max_int":"no int +egers")."\n"; for (my $i = 0; $i < @$ints; $i++) { print " - integer $ints->[$i] is proceeded by /$text->[$i]/\n"; } } __DATA__ ASBSDEC 34 GADVVEEVEETTE 56 IOEOREAK GKJEOG EFEAF 1090 DAFFEE 3762 ASB C 134 PPKOREAK EFEAF 290 What Is The Sqrt Of -1? This Line Is Only Text 101 Dalmations 42
|
|---|