using re.finditer()

Peter Otten __peter__ at
Wed Oct 27 22:35:04 CEST 2004

Erik Johnson wrote:

> pat = r'<td.*?>(.*?)</td>'
> for match in re.finditer(pat, html):
> print
> The iterator returned seems to work fine to step through items that
> happen to be contained within one line. That is, you can step through
> flat, one-line td's, but if you want to step through tr's, this doesn't
> work (run this code and notice Data 2-2 is not there). finditer() doesn't
> accept a flag like re.DOTALL, as re.match() and do. It seems a
> shame not to be able to put an otherwise smart design to use.

There was a discussion on python-dev recently concerning "missing arguments"
in re.findall() and re.finditer(), see

I think no change was made as there is already an alternative spelling:

r = re.compile(r'<td.*?>(.*?)</td>', re.DOTALL)
for match in r.finditer(html):

(or two, I didn't know about the option to embed flags in the string until
Robert Brewer's post).


More information about the Python-list mailing list