在Ruby字符串中提取模式后的值
我有这样一个字符串:在Ruby字符串中提取模式后的值,ruby,string,Ruby,String,我有这样一个字符串: ” 我试图从这个介于=\“content\”之间的字符串中提取内容,并将其放入一个数组中,如[“40”,“demo1”,“40”,“1”,“40…”等]当字符串如此简单时,可以使用如下扫描+正则表达式: 结果=html.scan(/ProdCode=“\d+?”/) 如果更复杂,可以使用nokogiri或oga等html解析器。当字符串如此简单时,可以使用如下扫描+正则表达式: 结果=html.scan(/ProdCode=“\d+?”/) 如果它更复杂,您可以使用像nok
”
我试图从这个介于=\“content\”之间的字符串中提取内容,并将其放入一个数组中,如[“40”,“demo1”,“40”,“1”,“40…”等]当字符串如此简单时,可以使用如下扫描+正则表达式: 结果=html.scan(/ProdCode=“\d+?”/)
如果更复杂,可以使用nokogiri或oga等html解析器。当字符串如此简单时,可以使用如下扫描+正则表达式: 结果=html.scan(/ProdCode=“\d+?”/)
如果它更复杂,您可以使用像nokogiri或oga这样的html解析器。您应该使用
:scan
按regexp模式选择元素。然后删除转义字符
string.scan(/"[^"]+"/).map { |element| element.delete('\\"') }
图案说明:
/
–regexp启动“
–第一个字符应该是”
[^”]+
–下一步应该是除“
”之外的任何字符标志上写着这样的字符数至少应该是1“
–下一步应该是”
/
–regexp结束string.scan(/“[^”]+”/)
将返回:
["\"40\"", "\"demo1\"", "\"40\"", "\"1\"", "\"40\"", "\"demo1\"", "\"40\"", "\"1\""]
然后我们可以使用:delete
方法删除\“
构建regexp的方便工具是您应该使用
:scan
按regexp模式选择元素。然后删除转义字符
string.scan(/"[^"]+"/).map { |element| element.delete('\\"') }
图案说明:
/
–regexp启动“
–第一个字符应该是”
[^”]+
–下一步应该是除“
”之外的任何字符标志上写着这样的字符数至少应该是1“
–下一步应该是”
/
–regexp结束string.scan(/“[^”]+”/)
将返回:
["\"40\"", "\"demo1\"", "\"40\"", "\"1\"", "\"40\"", "\"demo1\"", "\"40\"", "\"1\""]
然后我们可以使用:delete
方法删除\“
构建regexp的便捷工具是到目前为止您拥有什么?到目前为止您拥有什么?我使用nokogiri进行解析,但由于数据量巨大,导致内存分配错误。在这种情况下,您可以尝试使用nokigiris工具解析流,而不是加载整个xml文件,如果可能的话。我使用Nokigiri进行解析,但由于数据量巨大,导致内存分配错误。在这种情况下,如果可能的话,您可以尝试使用Nokigiri工具解析流,而不是加载整个xml文件。当内容为空,即“\”时,正则表达式被破坏并给出无效结果。您可以通过放置
[^]来简化+
在捕获组中:string.scan(/“([^”]+)”/).flatte
。您可以像这样处理空值:string.gsub(/“/”,“”).scan(/“[^”]+”).map{element | element | element.delete(“\\”)}
当内容为空时,即“\”,则正则表达式中断并给出无效结果。您可以通过放置[^]来简化+
在捕获组中:string.scan(/“([^”]+)”/).flatte
。您可以像这样处理空值:string.gsub(/”,“).scan(/“[^”]+”/).map{element | element.delete(“\\”)}