在Ruby中使用regex将行与特定的开始字符和结束字符模式匹配

在Ruby中使用regex将行与特定的开始字符和结束字符模式匹配,ruby,Ruby,我想从我在内存中读取并存储在数据变量中的文件中获取值dba、dba1、dba2 /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 } 但它返回的值为零 我做错了什么 > str

我想从我在内存中读取并存储在数据变量中的文件中获取值dba、dba1、dba2

/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 }
但它返回的值为零

我做错了什么

> 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"]
也许有一种更好的方法不涉及扁平化,但上面的方法是有效的

还有一个选择:

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