[Tutor] module re
Danny Yoo
dyoo at hkn.eecs.berkeley.edu
Sat May 1 20:16:56 EDT 2004
On Sat, 1 May 2004, Magnus [iso-8859-1] Lyck=E5 wrote:
> I'm not sure what you did, because re substitute functions return
> strings. Deletion is the same as replacing with "", right?
Marina used re.compile(), which returns a 'regex' object. I think there's
some confusion in the usage:
> > I used module re.compile(text, re.X).
What Marina probably wants to do is first compile a pattern, and then
apply that pattern to text. For example, if we have something like this:
###
>>> space_pattern =3D re.compile(' ')
###
then what we are holding now is a regular expression "pattern" object that
knows how to look at spaces:
###
>>> space_pattern
<_sre.SRE_Pattern object at 0x60a20>
###
This 'space' pattern object can be applied to things like string
substitution:
###
>>> space_pattern.sub('*', 'hello world this is a test')
'hello*world*this*is*a*test'
###
But note that trying to re.compile() the text we're trying to manipulate
isn't too effective:
###
>>> pattern =3D re.compile('hello world this is a test') ## ??
###
because we're inadvertantly reversing the roles of the text and the
pattern. We need to make a distinction between the "pattern" we're trying
to recognize, and the "text" we want to apply the pattern on. Maybe this
is the point of confusion; I'm not sure about this, though, since I
haven't seen more of Marina's program.
Marina, have you seen the Regex HOWTO tutorial yet? It has quite a few
examples of doing regular expressions in Python, written by A.M. Kuchling.
It's quite nice, and may help clear things up.
Here's a link to the tutorial:
http://www.amk.ca/python/howto/regex/
More information about the Tutor
mailing list