# Parse semantic version > Supported in: Batch, Streaming Parses a semantic version string into a logical type. Supports both release versions (e.g., "0.987.0") and versions with prerelease metadata (e.g., "0.987.0-16-gb3fb285"). Returns null for strings that do not match the expected format. **Expression categories:** String ## Declared arguments * **Version string:** Semantic version string. Supports both release versions (major.minor.patch) and versions with prerelease metadata (major.minor.patch-prerelease).
*Expression\* **Output type:** *Semantic Version* ## Examples ### Example 1: Base case **Argument values:** * **Version string:** `version` | version | **Output** | | ----- | ----- | | 0.987.0-16-gb3fb285 | {
 major -> 0,
 minor -> 987,
 patch -> 0,
 prerelease -> \[ 16-gb3fb285 ],
} | | 1.0.0-0-g0000000 | {
 major -> 1,
 minor -> 0,
 patch -> 0,
 prerelease -> \[ 0-g0000000 ],
} | | 2.5.3-42-gabc1234 | {
 major -> 2,
 minor -> 5,
 patch -> 3,
 prerelease -> \[ 42-gabc1234 ],
} | | 0.987.0-SNAPSHOT | {
 major -> 0,
 minor -> 987,
 patch -> 0,
 prerelease -> \[ SNAPSHOT ],
} | *** ### Example 2: Base case **Argument values:** * **Version string:** `version` | version | **Output** | | ----- | ----- | | 0.987.0 | {
 major -> 0,
 minor -> 987,
 patch -> 0,
 prerelease -> \[ ],
} | | 1.0.0 | {
 major -> 1,
 minor -> 0,
 patch -> 0,
 prerelease -> \[ ],
} | | 2.5.3 | {
 major -> 2,
 minor -> 5,
 patch -> 3,
 prerelease -> \[ ],
} | *** ### Example 3: Null case **Argument values:** * **Version string:** `version` | version | **Output** | | ----- | ----- | | *null* | *null* | *** ### Example 4: Edge case **Argument values:** * **Version string:** `version` | version | **Output** | | ----- | ----- | | invalid version string | *null* | | not-a-version | *null* | | 1.0 | *null* | ***