The first char in a word is omitted from being checked against the 'range' element of the 1st part of this expression. The second char is properly checked to see if it's in range # Desired safe string to expect goodString = "f42e6be1-29bf-4f3c-ba58-1ae1d9ca5f88" # Test string to return False if it's not within reg ex range. # but still returns a false positive even though the g at the start is outside of a-f range. badString = "g42e6be1-29bf-4f3c-ba58-1ae1d9ca5f88" # 2nd test string which does return a false result correctly. otherBadString = "fg2e6be1-29bf-4f3c-ba58-1ae1d9ca5f88" See attached file for example. "Python 2.5.4 (r254:67916, Dec 23 2008, 15:19:34) [MSC v.1400 64 bit (AMD64)] on win32"
I'm not sure I understand. The output I get is: f42e6be1-29bf-4f3c-ba58-1ae1d9ca5f88 g42e6be1-29bf-4f3c-ba58-1ae1d9ca5f88 False The first string matches. The second string matches because the leading "g" is being matched by "\w". The third string does not match because the "g" in the second position is not matched by "[0-9][a-f]". For the second string you're matching "\w" followed by 7 "[0-9][a-f]", just as the regex allows. Am I missing something?