Issue
I am trying to import maxrepeat module in python 2.7.3 and couldn’t get much information in google can some one please help.
What is the module that helps maxrepeat module to work ?
I am able to import maxrepeat module using “from _sre import maxrepeat” but still fails while runnninv automation .
Solution
MAXREPEAT
is used internally by the re
module as an upper limit for the minimum, maximum, or exact number of repetitions that can be specified in a pattern. For example:
>>> import re
>>> re.compile(r'a{100}') # exactly 100 "a"s
<_sre.SRE_Pattern object at 0x7fa68be10780>
>>> re.compile(r'a{100, 200}') # between 100 and 200 "a"s
Equalling or exceeding MAXREPEAT
in a repetition value causes an exception to be raised by the regular expression parser in module sre_parse
:
>>> from sre_constants import MAXREPEAT
>>> MAXREPEAT
4294967295L
>>> re.compile(r'a{{{}}}'.format(MAXREPEAT-1))
<_sre.SRE_Pattern object at 0x7f0ec959f660>
>>> re.compile(r'a{{{}}}'.format(MAXREPEAT))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/re.py", line 194, in compile
return _compile(pattern, flags)
File "/usr/lib64/python2.7/re.py", line 249, in _compile
p = sre_compile.compile(pattern, flags)
File "/usr/lib64/python2.7/sre_compile.py", line 572, in compile
p = sre_parse.parse(p, flags)
File "/usr/lib64/python2.7/sre_parse.py", line 716, in parse
p = _parse_sub(source, pattern, 0)
File "/usr/lib64/python2.7/sre_parse.py", line 324, in _parse_sub
itemsappend(_parse(source, state))
File "/usr/lib64/python2.7/sre_parse.py", line 518, in _parse
raise OverflowError("the repetition number is too large")
OverflowError: the repetition number is too large
There should not be any reason to care about MAXREPEAT
with normal use of the re
module. If you need to handle errors then use the exception:
try:
re.compile(r'a{{{}}}'.format(MAXREPEAT))
except OverflowError as exc:
print 'Failed to compile pattern: {}'.format(exc.message)
Answered By - mhawke
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.