【发布时间】:2020-07-30 22:38:25
【问题描述】:
我正在尝试用单个句点替换此语义版本2020.7.28-r5 中的-r,但我得到的是2020.7.28.。
这是我到目前为止的想法:
"2020.7.28-r5" -replace "(-[A-Za-z-][0-9A-Za-z-]*)", "."
规范:
-
r将始终是一个或多个字符(在本例中为r) -
r可以是任何 SemVer 合法字符 ([0-9A-Za-z-]) -
r总是以字符结尾,而不是数字 -
r前面总是有一个连字符- - 最终数字(当天的内部版本号)将始终为一位或多位数字
基于this answer我尝试了这个表达式:
"(-[A-Za-z-][0-9A-Za-z-]*)(?=\d{4})"
但它并没有取代任何东西。
如何以2020.7.28-The11thFantasticallyCleverUpdateForTheDay11 开头并以2020.7.28.11 结尾?
【问题讨论】:
-
你能举一些具体的例子吗?
r是一堆数字或字母的占位符吗?那么紧随其后的5是什么?一些前后的例子会有所帮助。 -
为什么'everUpdateForTheDay
11'没有被删除,因为r can contain any number of numbers and/or characters和11是一个数字。 -
r不是占位符。我在第一个项目符号描述中使用了包含这个词,这让我不清楚。我刚刚修好了。基本上我正在尝试将语义版本号转换为普通版本号。5是当天的内部版本号。 (我在我的 CD 管道中使用当前日期/版本作为我的版本号。) -
我认为您对占位符
r的含义一无所知。由于您无法区分r停止的位置和最后一位数字的开始位置。您也没有正确定义r的允许字符集。我不相信你知道。我建议您找到生成此内容的规范并将其用作模板,否则它将失败。 -
例如
2020.7.28-90523602536934697843811什么是r?根据您的规格,它不清楚。根据您选择的答案,替换为2020.7.28.90523602536934697843811
标签: regex powershell