繁体   English   中英

在Chef ruby​​中获取子字符串值

[英]Getting substring value in Chef ruby

我有一个具有以下值的字符串:

ucp-1.1.0_dtr-2.0.0

我试图从字符串中仅获取1.1.0 我正在使用以下代码,但似乎无法正常工作

substring = ucp-1.1.0_dtr-2.0.0.gsub('ucp-','')

String的[]和一个简单的正则表达式可以做到这一点:

'ucp-1.1.0_dtr-2.0.0'[/[\d.]+/] # => "1.1.0"

之所以可行,是因为搜索一旦匹配就会立即停止,因此第一次出现的结果为1.1.0

如果您想要第二次/最后一次出现,则添加$告诉正则表达式引擎仅查看匹配模式的行尾:

'ucp-1.1.0_dtr-2.0.0'[/[\d.]+$/] # => "2.0.0"

Regexp文档涵盖了所有这一切。

substring = "ucp-1.1.0_dtr-2.0.0".gsub('ucp-','').split("_").first尝试。

试试这个(已验证):

"ucp-1.1.0_dtr-2.0.0".match(/^. -(. )_. -. $/)[1]

使用正则表达式和红宝石字符串方法可以实现此目标。

"ucp-1.1.0_dtr-2.0.0"

version = "ucp-1.1.0_dtr-2.0.0".scan(/[0-9_]/).join(".").split("_").first.slice(0..-2)

或者使用您的代码,您可以尝试一下。

substring = "ucp-1.1.0_dtr-2.0.0".gsub('ucp-','').split("_").first

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM