[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