Perl Range operator paradigm

Peter Hansen peter at engcorp.com
Mon Oct 22 07:45:02 EDT 2001


Laurent Pierron wrote:
> 
> Hello Gurus,
> 
> In Perl there is a very powerful range operator '..', which, in scalar
> context, is acting like line-range (,) operator in sed and awk.
> 
> By example, this small program prints all the lines in the file included
> between <BODY>...</BODY> :
> 
> while (<>) {
>    if (/<BODY>/ .. /<\/BODY>/) {print; }
> }
> 
> How can I do, the same thing in Python ?

Requirements insufficiently detailed.  What happens, for example,
if there are multiple <BODY> </BODY> pairs in the file?  Does
it do a "greedy" match and use the first <BODY> and the last
</BODY>, or does it do each pair separately?

Also, is it case-sensitive?  HTML is not, but XML (and thus
XHTML) is.  Which does the above do?

If there were text on the line after <BODY>, would it print
that text or, as you imply, only the *lines* between the two
tags?  What if both appeared on the same line?  Any output?

(I think it must already be written somewhere as a law
that even the specifications for a Perl one-liner cannot
easily be described ... :-)

-- 
----------------------
Peter Hansen, P.Eng.
peter at engcorp.com



More information about the Python-list mailing list