[Zope] Using RegEx in Script(Python)

Andreas Pakulat ap125@informatik.uni-rostock.de
Fri, 27 Jun 2003 02:48:24 +0200


On 27.Jun 2003 - 01:53:27, Steffen Hausmann wrote:
> On Fri, Jun 27, 2003 at 01:09:27AM +0200, Andreas Pakulat wrote:
> > I wanted to know if the above can be done? What I need is a function
> > that replaces every character of a string, that is not in [a-zA-Z1-9]
> > with an underscore. I want to use this to automatically create an
> > Object-Id from a title, to create a new Object.
> > 
> > If this is not possible directly within a Script(Python), can it be done
> > using an ExternalMethod? I suppose yes.
> 
> In order to use regular expressions in python you need to 'import re'.
> 
> After that you can use 'sub(pattern, repl, string[, count])' to
> substitue a string.
> 
> For more information on regexps in python take a look at
> http://www.python.org/doc/current/lib/node99.html#l2h-732

The problem is that import re leads to an BasiAuth Dialog, which cannot
be fulfilled. I mean, I'm already logged in to the ZMI but do get a
BasicAuth Dialog if I execute the script that tries to import re. I
think that regexp's are not completely included in Zope - I looked at
some parts of the python-code and did not find the sub-function at the
point where all the other re-functions are mad "safe". 

I have a workaround that iterates over the string as list and changes
everything that is not alphanumeric into '_'. As the strings I replace
won't get very long (max 100 chars) this should be fast enough. 

I also tried the external method, but I think I did something wrong, the
following returns the unchanged string:

re.sub('[^a-zA-Z0-9]','WS/04','_')

Andreas

-- 
"Life, loathe it or ignore it, you can't like it."
		-- Marvin, "Hitchhiker's Guide to the Galaxy"