我正在尝试从 SemVer 中去除前缀,1.2.3-prefix.42
即将1.2.3
.
我正在使用https://github.com/mojombo/semver/issues/32#issuecomment-7663411中的这个正则表达式:
^(\d+\.\d+\.\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?
使用 Ruby 的gsub
方法时,它可以工作:
puts '1.2.3-alpha.4'.gsub(/^(\d+\.\d+\.\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/, '\1')
# => 1.2.3
但是当使用sed
终端形式时,它不会:
$ echo '1.2.3-alpha.4' | sed -e 's/^(\d+\.\d+\.\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/\1/g'
$ 1.2.3-alpha.4
我错过了什么?
我在 Mac OS X 上使用 zsh。
谢谢