import sys
sys.path.append('/Users/thatch/code/sre_yield_thatch')
import sre_yield
reload(sre_yield)
v = sre_yield.AllStrings('[01]{1,5}')
len(v)
v[0]
print list(v)
v = sre_yield.AllMatches(r'([\'"])((\\\\|\\.|[^\\])*?)\1', max_count=10)
len(v)
v.__len__()
for i in range(10):
print v[i].group(0)
for i in range(10):
print repr(v[i].group(0))
v[2].group(0)
v[2].group(1), v[2].group(2)
r'"abc\\\n\0"' in v
# r'([\'"])((\\\\|\\.|[^\\])*?)\1'
v = sre_yield.AllStrings('.*')
len(v)
v.__len__()
# This used to be taken literally from the parse tree.
print sre_yield.MAX_REPEAT_COUNT
import re, _sre
reload(re) # clears cache, yes there are other ways to show the tree
re.compile('.*', re.DEBUG)
re.compile('.*?', re.DEBUG)
print _sre.MAXREPEAT
import math
def show_size(n):
print int(math.ceil(math.log(n.__len__(), 10))), "decimal digits"
print int(math.ceil(math.log(n.__len__(), 256))), "bytes"
show_size(v)
show_size(sre_yield.AllStrings('.*.*.*'))
show_size(sre_yield.AllStrings('(?:(?:[a-z]{,100}){,100}){,100}'))