Type of regular expression
Peter Otten
__peter__ at web.de
Fri Jul 2 04:30:36 EDT 2004
Joakim Hove wrote:
>
> Peter Otten <__peter__ at web.de> writes:
>
>> Joakim Hove wrote:
>>
>>> I wondered how I could test wether an argument was of type compiled
>>> regexp:
>>
>> Both strings and compiled regular expressions can be compiled:
>
> [...]
>
>> Therefore I would not test beforehand, just rely on re.compile() to know
>> what it can deal with:
>>
>>>>> def do_something(s):
>> ... try:
>> ... s = re.compile(s)
>> ... except TypeError:
>> ... sys.exit("Something went wrong")
>> ... # more stuff
>> ...
>
> Thanks for answering, however I am afraid i posed the question
> somewhat ambigously: The point is that i want the function to do
> different things depending on the type of input:
The easiest way to get the type of regular expressions:
>>> import re
>>> r = re.compile("")
>>> RegexType = type(r)
>>> del r
The types has examples where it's done in exactly the same way.
Now do the test:
>>> isinstance(re.compile("abc"), RegexType)
True
>>> isinstance("abc", RegexType)
False
An alternative would be to test for the part of the interface you are
interested in (the match() method in the following example):
>>> r = re.compile("abc")
>>> if hasattr(r, "match"):
... print "it's a regexp"
... else:
... print "it's a string"
...
it's a regexp
Peter
More information about the Python-list
mailing list