Skip to content

Compare dotted version strings

Return a negative number, zero, or a positive number for less, equal, or greater.

18th August 2026

import re
from typing import List


def version_compare(version1: str, version2: str) -> int:
    def normalize(v: str) -> List[int]:
        return [int(x) for x in re.sub(r'(\.0+)*$', '', v).split(".")]

    def cmp(left, right):
        return (left > right) - (left < right)

    return cmp(normalize(version1), normalize(version2))