oh,I see it finally.Thanks for everyone!

2005/11/29, John W. Krahn <[EMAIL PROTECTED]>:
> Jeff Pang wrote:
> > yes,John's code work well too.But I still don't know why this code
> > can't run correctly:
> >
> > next unless /(\S+).*(\d+\.\d+\.\d+\.\d+)/s;
> >
> > When I run it,I get these results:
> >
> > 364     2.168.2.20
> > 286.4   2.168.2.21
> > 264.4   2.168.2.22
> > 138     2.168.2.23
> > 562.3   2.168.2.24
> > 80.7    2.168.2.25
> > 355     2.168.2.26
> > 266.5   2.168.2.27
> > 327     2.168.2.28
> >
> >
> > somethings as '19' have lost.
>
> That is because .* is greedy and will match everything to the end of the
> string and then backtrack until (\d+\.\d+\.\d+\.\d+) matches which specifies
> that the first \d+ only has to match at least one digit.
>
> Since the two fields start and end with digits you could do this instead:
>
> next unless /([\d.]+)\D+(\d+\.\d+\.\d+\.\d+)/;
>
>
> 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>
>
>
>

--
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