Python - Check Numeric Suffix in String

A suffix refers to characters added to the end of a string. In programming, checking for numeric suffixes is a common task when processing filenames, user IDs, or data validation. A numeric suffix means the string ends with one or more digits.

For example, in the string "example123", the suffix "123" is numeric. Similarly, "hello_world7" has a numeric suffix "7", while "hello_world" has no numeric suffix.

Python provides several approaches to check if a string has a numeric suffix. Let's explore the most effective methods.

Using Regular Expressions

The re module provides powerful pattern matching capabilities. We can use regular expressions to detect numeric patterns at the end of strings.

Example

The pattern r"\d+$" matches one or more digits (\d+) at the end of the string ($) ?

import re

def has_numeric_suffix(string):
    pattern = r"\d+$"  # Matches one or more digits at the end
    return re.search(pattern, string) is not None

# Test the function
print(has_numeric_suffix("python123"))
print(has_numeric_suffix("python"))
print(has_numeric_suffix("file_v2"))
print(has_numeric_suffix("document"))
True
False
True
False

Using String Methods

Python's built-in string methods provide a simple way to check the last characters without regular expressions.

Example

We can extract the last character and check if it's a digit using isdigit() ?

def has_numeric_suffix(string):
    if not string:  # Handle empty string
        return False
    return string[-1].isdigit()

# Test the function
print(has_numeric_suffix("python123"))
print(has_numeric_suffix("tutorial"))
print(has_numeric_suffix("user_id9"))
print(has_numeric_suffix(""))
True
False
True
False

Using str.endswith() Method

The endswith() method can check if a string ends with any digit by passing a tuple of all possible digits.

Example

We create a tuple of digit strings and check if the string ends with any of them ?

def has_numeric_suffix(string):
    digits = tuple(str(i) for i in range(10))  # ('0', '1', '2', ..., '9')
    return string.endswith(digits)

# Test the function
print(has_numeric_suffix("python123"))
print(has_numeric_suffix("tutorialspoint"))
print(has_numeric_suffix("version2"))
print(has_numeric_suffix("test_"))
True
False
True
False

Checking for Multiple Consecutive Digits

Sometimes you need to ensure the suffix contains multiple digits, not just one. Here's how to check for numeric suffixes of specific lengths ?

import re

def has_numeric_suffix_length(string, min_length=1):
    pattern = f r"\d{{{min_length},}}$"  # At least min_length digits at end
    return re.search(pattern, string) is not None

# Test with different minimum lengths
test_strings = ["file1", "file123", "document", "user_id99"]

for string in test_strings:
    print(f"'{string}': 1+ digits = {has_numeric_suffix_length(string, 1)}, "
          f"2+ digits = {has_numeric_suffix_length(string, 2)}")
'file1': 1+ digits = True, 2+ digits = False
'file123': 1+ digits = True, 2+ digits = True
'document': 1+ digits = False, 2+ digits = False
'user_id99': 1+ digits = True, 2+ digits = True

Comparison

Method Performance Flexibility Best For
Regular Expression Moderate High Complex pattern matching
String Methods Fast Low Simple single-digit check
endswith() Fast Low Simple readable code

Conclusion

Use string methods like isdigit() for simple single-digit suffix checks. For complex patterns or multiple-digit requirements, regular expressions provide the most flexibility. The endswith() method offers a clean middle-ground solution.

Updated on: 2026-03-27T11:27:06+05:30

598 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements