首页 > 解决方案 > 如何替换除最后一位数字以外的所有字符

问题描述

我试图用一个句点替换-r这个语义版本2020.7.28-r5中的 ,但我得到了这个2020.7.28.

到目前为止,这是我想出的:

"2020.7.28-r5" -replace "(-[A-Za-z-][0-9A-Za-z-]*)", "."

规格:

基于这个答案,我尝试了这个表达:

"(-[A-Za-z-][0-9A-Za-z-]*)(?=\d{4})"

但它并没有取代任何东西。

我怎样才能开始2020.7.28-The11thFantasticallyCleverUpdateForTheDay11和结束2020.7.28.11

标签: regexpowershell

解决方案


您可以使用

-replace '-[A-Z][0-9A-Z]*?(\d+)$', '.$1'

请参阅正则表达式演示。请注意 PS 正则表达式默认不区分大小写,[A-Z]足以匹配所有 ASCII 字母。

细节

  • -- 一个连字符
  • [A-Z]- 任何 ASCII 字母
  • [0-9A-Z]*?- 零个或多个数字或字母
  • (\d+)- 第 1 组($1指此值):一位或多位数字
  • $- 字符串结束。

推荐阅读