Semver 모양
Semantic Versioning 이 대부분 소프트웨어 릴리스의 기반인 MAJOR.MINOR.PATCH 포맷. 기본 정규식:
^\d+\.\d+\.\d+$
점으로 join 된 숫자 부분 셋. 1.0.0 매칭; 1.0 매칭 X.
풀 semver 패턴
실제 semver 가 pre-release suffix (1.0.0-alpha, 1.0.0-rc.1) 와 build metadata (1.0.0+build.123) 허용. Semver spec 의 공식 정규식:
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
그래, 그게 공식. 그래, 외우지 말고 찾아봐. GitHub 의 semver spec README 가 있음.
Ad-hoc 사용엔
대부분 풀 semver 필요 X — "version-shape 매칭하는 거" 필요. 단순 \d+\.\d+\.\d+ 가 대부분 케이스 커버.
버전 비교
버전을 정규식으로 비교 X — 부분 추출 후 숫자로 비교. Python: packaging.version.parse. Node: semver npm 패키지. Go: 표준 라이브러리 처리.