Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby字符串中提取模式后的值_Ruby_String - Fatal编程技术网

在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(“\\”)}