RegEx单词匹配

时间:2012-01-08 01:39:39

标签: ruby regex nokogiri

页面上的

元素需要我想要提取的内容 这是在与Nokogiri进行解析之后的element.content

["\n       \n       \n       \n          itemId[0]=1234;\n       \n        \n          \n        \n       \n       \n       \n        My Project: First Edition\n       \n      ", "\n       \n       \n       \n          itemId[1]=2345;\n       \n        \n          \n        \n       \n       \n       \n        My Second Edition\n       \n      ", "\n       \n       \n       \n          itemId[2]=1234;\n       \n        \n          \n        \n       \n       \n       \n        Third\n       \n          \n"]

我能够获得itemId[0]=1234 (/itemId.\d+..\d{4}/)的RegEx,但我完全不知道如何获取内容的名称。有什么建议?也许我可以通过HTML解析Ruby?

2 个答案:

答案 0 :(得分:0)

给出这样的字符串:

s= "\n       \n       \n       \n          itemId[0]=1234;\n       \n        \n          \n        \n       \n       \n       \n        My Project: First Edition\n       \n      "

你可以这样做:

m    = s.match(/(itemId\[\d+\]=\d+);(.*)/m)
item = m[1]
# itemId[0]=1234
name = m[2].strip
# My Project: First Edition

基本上,您使用(或多或少)或现有表达式拉出itemId...部分,以多行模式((.*))抓取字符串的其余部分(/m),这样.匹配换行符),然后使用strip删除正则表达式之外的有问题的空格。您不必构建一个无法读取的正则表达式,它可以执行您需要的所有内容,允许对匹配结果进行后处理,有时甚至可以鼓励。

答案 1 :(得分:0)

我建议您使用split查找所有非空行。

str.split(/\s*\n\s*/)

应该这样做。