Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby中的正则表达式匹配和拆分_Ruby - Fatal编程技术网

ruby中的正则表达式匹配和拆分

ruby中的正则表达式匹配和拆分,ruby,Ruby,我有一大串这样的格式: FA dir_name1 file_name1 FA dir_name1 file_name2 FA dir_name2 file_name1 FA dir_name2 file_name2 .... 我在想,如果我们可以在执行split时编写一个正则表达式,它将返回一个由以下内容组成的数组: ["dir_name1/file_name1", "dir_name1/file_name2", "dir_name2/file_name1", "dir_name2/file_

我有一大串这样的格式:

FA dir_name1 file_name1
FA dir_name1 file_name2
FA dir_name2 file_name1
FA dir_name2 file_name2
....
我在想,如果我们可以在执行split时编写一个正则表达式,它将返回一个由以下内容组成的数组:

["dir_name1/file_name1", "dir_name1/file_name2", "dir_name2/file_name1", "dir_name2/file_name2"]
我尝试过先拆分大字符串,然后执行正则表达式。它可以工作,但我们不能用更简单的方法吗


还有其他方法吗?

当您希望从字符串中获取数组时,需要进行一些拆分

input.scan(/(?<=^FA ).*$/).
      map { |e| e.split.join('/') }
#⇒ [
#   [0] "dir_name1/file_name1",
#   [1] "dir_name1/file_name2",
#   [2] "dir_name2/file_name1",
#   [3] "dir_name2/file_name2"
#  ]

即使在古旧的红宝石中,这也应该起作用:

input.lines.map { |line| line.strip[2..-1].sub(' ', '/') }

您必须分两步完成,因为任何可以拆分的函数(
split
lines
scan
)都不能为您提供斜杠。

我只是想尝试使用Ruby 2.6:


这不是数组。@sawa现在怎么样?编辑使它现在可以了。太好了。谢谢顺便说一句,我没有看到它的工作,它的ruby 1.8。我看到了:yFailures.rb:19:undefined(?)sequence:/(?对不起,现在已经是二十一世纪了。
Ruby 1.8
在几十年前就被淘汰了。如果我不得不在1.8中做什么呢?
input.lines.map { |line| line.strip[2..-1].sub(' ', '/') }
input.lines.map { |s| s.split.then { |e| e.last(2).join('/') } }

#=> ["dir_name1/file_name1", "dir_name1/file_name2", "dir_name2/file_name1", "dir_name2/file_name2"]