Hostmask matching

John Machin sjmachin at lexicon.net
Sun Jun 4 00:47:40 EDT 2006


On 4/06/2006 1:57 PM, Nexu wrote:
> I'm trying to write a def

Perhaps you mean a function?

> to match a string that is an irc hostmask. eg:
> *one!~*name at a??-??-101-101.someisp.com
> But using re.search().

If you want to find an IRC hostmask in some longer string, yes, use 
re.search(). However if you want to check that a given string could be 
an IRC hostmask, use re.match().

> I get an error when the string starts with '*'.

Do you get an error when the searched string starts with anything else?

> What is the best way to solve this?
> 

A reasonable way would be to ask a question that includes the minimum 
useful information, so that would-be helpers are not forced to guess:

1. your inputs (the re pattern, and the searched string)
2. the expected outcome (match object that spans which part of the 
searched string)
3. the actual outcome (copy/paste of the traceback and error message 
that you got)

Another way might be to Read The Fantastic Manual, in particular the 
section on re syntax, and nut out the answer your self.

In any case, here's my guess as to what's going down:

1. You mean that the pattern starts with '*', not the searched string.
2. The error that you got was something like this:

[snip]
   File "C:\Python24\lib\sre.py", line 180, in compile
     return _compile(pattern, flags)
   File "C:\Python24\lib\sre.py", line 227, in _compile
     raise error, v # invalid expression
sre_constants.error: nothing to repeat

3. You haven't read this part of The Fantastic Manual:

"\"
Either escapes special characters (permitting you to match characters 
like "*", "?", and so forth), or ...

===

As well as TFManual, there's also a HOWTO:
http://www.amk.ca/python/howto/regex/


HTH,
John



More information about the Python-list mailing list