On Mon, 26 Feb 2018, Roger Lea Scherer wrote:

""" ensure input is no other characters than digits
sudocode: if the input has anything other than digits
return digits  """
 ....
p = re.compile(r'[^\D]')

I'm not so great at regular expressions, but this regex appears to be searching for a string that matches anything in the class start-of-string of non-digit.

"[...]" says, look for anything in this set of characters; and you have two things:
 ^ : start-of-string
 \D : any non-digit

Instead of looking fo re xcaprions, I would look for what you *do* want. this regex should do it for you:

  r'^\d+$'

This is looking for a start-of-string ("^"); then a digit ("\d") that occurs at least once (the "+" qualifier); then an end-of string ("$").

In other words, one or more digits, with nothing else before or after.

Here's a simple looping test to get you started (ignore the "from __future__" line; I'm running Python 2):

from __future__ import print_function
import re
p = re.compile(r'^\d+$')
test_data = ["4jkk33", "4k33", "4jjk4", "4334", "4","44", "444", ""]
for thing in test_data:
    m = p.match(thing)
    if m is None:
        print("not all digits:", thing)
    else:
        print("all digits:", thing)


--
Terry Carroll
carr...@tjc.com

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to