在Ruby中使用特殊字符拆分字符串

时间:2014-06-03 15:10:30

标签: ruby string split

我需要使用特殊字符分割字符串,例如“<> =和空格。

字符串示例:

  <fileset dir="/tmp/test/my_test" includes="all"/>

到目前为止,我尝试使用不同的组合但没有结果 例如:

line.split(/<=>"\s+/).each do |line_parsed|
    puts line_parsed
end

2 个答案:

答案 0 :(得分:1)

正则表达式不是解析XML的正确工具。您可以使用任何您喜欢的XML解析器,我在这里使用Nokogiri:

require 'nokogiri'

doc = Nokogiri::XML(line)
fileset = doc.css('fileset').first

fileset.attr 'dir'
#=> "/tmp/test/my_test"

fileset.attr 'includes'
#=> "all"

如果您在向我们展示的代码周围有另一个循环{la} each_line,那么您可以完全放弃它并在一次运行中解析整个文档。

答案 1 :(得分:0)

尝试将特殊字符括在&#34;字符类&#34; ([...])并将重复字符(+)移到外面:

parts = line.split(/[<=>"\s]+/)
# => ["", "fileset", "dir", "/tmp/test/my_test", "includes", "all", "/"]

parts[1] # => "fileset"
parts[2] # => "dir"
parts[3] # => "/tmp/test/my_test"