PowerShell数字读取方法及release正则匹配代码解析求助
PowerShell读取数字及正则表达式解析
一、PowerShell中读取数字的常见方法
- 读取用户输入并转换:通过
Read-Host获取输入文本,再转换为数字类型,示例:$inputText = Read-Host "请输入数字" $intNum = [int]$inputText # 转换为整数,浮点数可用[double] - 从字符串中提取数字:用正则匹配提取目标数字,示例:
$targetStr = "build-2024.05.12" if ($targetStr -match '\d+(\.\d+)*') { $extractedNumber = $matches[0] Write-Host "提取到的数字部分:$extractedNumber" } - 从文件/命令输出读取:结合管道和正则,提取文件内容或命令返回结果中的数字,示例:
# 从文件中读取版本号数字 $fileContent = Get-Content "version.txt" if ($fileContent -match 'v(\d+\.\d+\.\d+)') { $versionNum = $matches[1] }
二、正则表达式release(-)\d+(\.\d)+(\.\d)$解析
把正则拆分为各部分逐一解释:
release:匹配字面字符串"release",PowerShell默认-match不区分大小写,若要区分用-cmatch(-):匹配单个连字符-,括号为捕获组,匹配结果会存入$matches[1]\d+:匹配1个及以上数字(至少1位整数)(\.\d)+:捕获组,匹配"点+1个及以上数字"的组合,且该组合至少出现1次(\.\d):捕获组,匹配"点+单个数字",仅能匹配1次$:匹配字符串末尾,确保整个字符串以最后一个.\d结尾
匹配与不匹配示例
- 符合匹配的字符串:
release-1.2.3RELEASE-10.5.8(不区分大小写)release-0.10.9
- 不符合匹配的字符串:
release1.2.3(缺少连字符-)release-1.2(仅两位版本号,不满足末尾.\d的要求)release-1.2.3.4(多了一段版本号,超出正则结尾限制)release-1.2a.3(包含非数字字符)
注:原代码中$commit Id存在语法错误,PowerShell变量名不能含空格,应改为$commitId;echo在PowerShell中是Write-Output的别名,直接输出变量$ci_commit即可。
内容的提问来源于stack exchange,提问作者Sivateja Suragani
相关产品推荐
相关产品推荐

