2014-12-04 31 views
0

我想從我在內存中讀取並存儲在數據變量中的文件中獲取值dba,dba1,dba2。使用Ruby中的正則表達式匹配特定的開始和結束字符模式

/host/sec/sc1/db_usr/user = dba 
/host/sec/sc1/db_usr1/user = dba1 
/host/sec/sc1/db_usr2/user = dba2 

我想下面的正則表達式:

data.split("\n").grep(/\/host\/sec\/S\/user/).map{ |l| l.split.last } 

但它返回nil值。

我在這裏做錯了什麼?

回答

0
> str = "/host/sec/sc1/db_usr/user = dba 
* /host/sec/sc1/db_usr1/user = dba1 
* /host/sec/sc1/db_usr2/user = dba2" 
=> "/host/sec/sc1/db_usr/user = dba\n/host/sec/sc1/db_usr1/user = dba1\n/host/sec/sc1/db_usr2/user = dba2" 

> str.scan(%r!/user = (.*)?(?:\n|\z)!).flatten 
=> ["dba", "dba1", "dba2"] 

有可能是將不涉及flatten但上述工作更好的辦法。

這裏的另一種選擇:

> str.split("\n").map {|e| e.split(" = ").last} 
=> ["dba", "dba1", "dba2"] 
相關問題