Bernard Lebel wrote: > Hello, > > I'm using regular expressions to check if arguments of a function are > valid. When I run the code below, I get an error. > > Basically, what the regular expression "should" expect is either an > integer, or an integer followed by a letter (string). I convert the > tested argument to a string to make sure. Below is the code. > > > > # Create regular expression to match > oPattern = re.compile( r"(\d+|\d+\D)", re.IGNORECASE )
This will match a string of digits followed by any non-digit, is that what you want? If you want to restrict it to digits followed by a letter you should use r"(\d+|\d+[a-z])" Also this will match something like 123A456B, if you want to disallow anything after the letter you need to match the end of the string: r"(\d+|\d+[a-z])$" > > # Iterate provided arguments > for oArg in aArgs: > > # Attempt to match the argument to the regular expression > oMatch = re.match( str( oArg ), 0 ) The problem is you are calling the module (re) match, not the instance (oPattern) match. re.match() expects the second argument to be a string. Just use oMatch = oPattern.match( str( oArg ), 0 ) The hint in the error is "expected string or buffer". So you are not giving the expected argument types which should send you to the docs to check... Kent > > > > The error I get is this: > > #ERROR : Traceback (most recent call last): > # File "<Script Block >", line 208, in BuildProjectPaths_Execute > # aShotInfos = handleArguments( args ) > # File "<Script Block >", line 123, in handleArguments > # oMatch = re.match( str( oArg ), 0 ) > # File "D:\Python24\Lib\sre.py", line 129, in match > # return _compile(pattern, flags).match(string) > #TypeError: expected string or buffer > # - [line 122] _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor