Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save yushiyangk/206bceefbfeb7b86895bbff24825e532 to your computer and use it in GitHub Desktop.

Select an option

Save yushiyangk/206bceefbfeb7b86895bbff24825e532 to your computer and use it in GitHub Desktop.
Regular expressions for Python built-in types

Regular expressions for Python built-in types

bool_pattern = ".*"
int_pattern = r"[+-]?(?:[0-9]|[0-9][0-9_]*[0-9])"
float_numeric_pattern = r"[+-]?(?:[0-9]\.?|[0-9][0-9_]*[0-9]\.?|(?:[0-9]|[0-9][0-9_]*[0-9])?\.(?:[0-9]|[0-9][0-9_]*[0-9]))(?:[eE][+-](?:[0-9]|[0-9][0-9_]*[0-9]))?"
float_pattern = r"[+-]?(?:(?:[0-9]\.?|[0-9][0-9_]*[0-9]\.?|(?:[0-9]|[0-9][0-9_]*[0-9])?\.(?:[0-9]|[0-9][0-9_]*[0-9]))(?:[eE][+-](?:[0-9]|[0-9][0-9_]*[0-9]))?|[iI][nN][fF](?:[iI][nN][iI][tT][yY])?|[nN][aA][nN])"

Expanded

bool_pattern = ".*"

unsigned_int_pattern = r"(?:[0-9]|[0-9][0-9_]*[0-9])"
int_pattern = r"[+-]?" + unsigned_int_pattern

unsigned_mantissa_pattern = r"(?:" + r"|".join([
    unsigned_int_pattern + r"\.?",
    unsigned_int_pattern + r"?\." + unsigned_int_pattern,
]) + r")"
exponent_pattern = r"(?:[eE][+-]?" + unsigned_int_pattern + r")"
float_numeric_pattern = r"[+-]?" + unsigned_mantissa_pattern + exponent_pattern + r"?"
float_pattern = r"[+-]?(?:" + r"|".join([
    unsigned_mantissa_pattern + exponent_pattern + r"?",
    r"[iI][nN][fF](?:[iI][nN][iI][tT][yY])?",
    r"[nN][aA][nN]",
]) + r")"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment