2016-05-09 5 views
0

Ich habe eine Zeichenfolge, die den folgenden Wert hat:Erster Teilzeichenwert in der Chef-Rubin

ucp-1.1.0_dtr-2.0.0 

Ich versuche nur zu holen 1.1.0 aus dem String. Ich verwende den folgenden Code, aber es scheint nicht

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

Antwort

2

String des [] und eine einfache regex wird es tun:

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

Das funktioniert, weil die Suche so schnell stoppen, wie es passt, so dass das erste Auftreten gewinnt, was zu 1.1.0.

Wenn Sie das zweite/letztes Vorkommen wollten dann $ Zugabe erzählt die Regex-Engine nur für die passenden Muster am Ende der Zeile aussehen:

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

Die Regexp documentation alles abdeckt.

0

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

0

Versuchen Sie diese (überprüft):

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

0

mit Ruby String-Methoden unter Verwendung von regex Sie dies erreichen können ..

"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) 

Oder mit Ihrem Code können Sie versuchen, dies ..

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