在 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-','')
substring = "ucp-1.1.0_dtr-2.0.0".gsub('ucp-','').split("_").first
未尝试过。
试试这个(已验证):
"ucp-1.1.0_dtr-2.0.0".match(/^.<em>-(.</em>)_.<em>-.</em>$ /)[1]
使用带有 ruby 字符串方法的正则表达式你可以实现这个..
"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
String 的 []
和一个简单的正则表达式就可以做到:
'ucp-1.1.0_dtr-2.0.0'[/[\d.]+/] # => "1.1.0"
这是可行的,因为搜索将在匹配后立即停止,因此第一次出现的结果会导致 1.1.0
。
如果你想要 second/last 出现然后添加 $
告诉正则表达式引擎只查看匹配模式的行尾:
'ucp-1.1.0_dtr-2.0.0'[/[\d.]+$/] # => "2.0.0"
Regexp documentation涵盖了所有这些。
我有一个具有以下值的字符串:
ucp-1.1.0_dtr-2.0.0
我试图从字符串中仅获取 1.1.0
。我正在使用以下代码,但它似乎不起作用
substring = ucp-1.1.0_dtr-2.0.0.gsub('ucp-','')
substring = "ucp-1.1.0_dtr-2.0.0".gsub('ucp-','').split("_").first
未尝试过。
试试这个(已验证):
"ucp-1.1.0_dtr-2.0.0".match(/^.<em>-(.</em>)_.<em>-.</em>$ /)[1]
使用带有 ruby 字符串方法的正则表达式你可以实现这个..
"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
String 的 []
和一个简单的正则表达式就可以做到:
'ucp-1.1.0_dtr-2.0.0'[/[\d.]+/] # => "1.1.0"
这是可行的,因为搜索将在匹配后立即停止,因此第一次出现的结果会导致 1.1.0
。
如果你想要 second/last 出现然后添加 $
告诉正则表达式引擎只查看匹配模式的行尾:
'ucp-1.1.0_dtr-2.0.0'[/[\d.]+$/] # => "2.0.0"
Regexp documentation涵盖了所有这些。