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