import re re.compile(r'[A-Z]') #$ charRange=1:2-3:4 try: re.compile(r'[]-[]') #$ SPURIOUS: charRange=1:2-3:4 raise Exception("this should not be reached") except re.error: pass re.compile(r'[---]') #$ charRange=1:2-3:4 re.compile(r'[\---]') #$ charRange=1:3-4:5 re.compile(r'[--\-]') #$ charRange=1:2-3:5 re.compile(r'[\--\-]') #$ charRange=1:3-4:6 re.compile(r'[0-9-A-Z]') #$ charRange=1:2-3:4 charRange=5:6-7:8 re.compile(r'[0\-9-A-Z]') #$ charRange=4:5-6:7 try: re.compile(r'[0--9-A-Z]') #$ SPURIOUS: charRange=1:2-3:4 charRange=4:5-6:7 raise Exception("this should not be reached") except re.error: pass re.compile(r'[^A-Z]') #$ charRange=2:3-4:5 re.compile(r'[\0-\09]') #$ charRange=1:3-4:6 re.compile(r'[\0-\07]') #$ charRange=1:3-4:7 re.compile(r'[\0123-5]') #$ charRange=5:6-7:8 #Negative lookahead re.compile(r'(?!not-this)^[A-Z_]+$') #$ charRange=14:15-16:17 #Negative lookbehind re.compile(r'^[A-Z_]+$(?