我需要使用特殊字符分割字符串,例如“<> =和空格。
字符串示例:
<fileset dir="/tmp/test/my_test" includes="all"/>
到目前为止,我尝试使用不同的组合但没有结果 例如:
line.split(/<=>"\s+/).each do |line_parsed|
puts line_parsed
end
答案 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"