我有一个这样的字符串:
"<root><some ProdCode=\"40\" ProducerName=\"demo1\" ProdCode=\"40\" Need_Confirmation=\"1\"/><some ProdCode=\"40\" ProducerName=\"demo1\" ProdCode=\"40\" Need_Confirmation=\"1\"/></root>"
我正在尝试从= \“ content \”之间的字符串中提取内容并将其放入数组中,如[“40”,“demo1”,“40” , “1”,40 ......]
答案 0 :(得分:2)
您应该使用:scan
按regexp模式选择元素。然后删除转义字符。
string.scan(/"[^"]+"/).map { |element| element.delete('\\"') }
模式说明:
/
- regexp启动"
- 第一个字符应为"
[^"]+
- next应该是除"
之外的任何字符。 +符号表示此类字符的数量应至少为1。"
- 接下来应该是"
/
- 正则表达式结束所以string.scan(/"[^"]+"/)
会返回:
["\"40\"", "\"demo1\"", "\"40\"", "\"1\"", "\"40\"", "\"demo1\"", "\"40\"", "\"1\""]
然后我们可以使用\"
方法删除:delete
。
构建regexp的便捷工具是http://rubular.com/
答案 1 :(得分:0)
当你的字符串很简单时,你可以像这样使用scan +正则表达式:
result = html.scan(/ ProdCode =“\ d +?”/)
如果它更复杂,你可以使用像nokogiri或oga那样的html解析器。