为什么我的Ruby lookahead正则表达式不起作用

为什么我的Ruby lookahead正则表达式不起作用,ruby,regex,regex-lookarounds,Ruby,Regex,Regex Lookarounds,可能重复: 我在rubular.com上测试了我的正则表达式,它可以工作,但当我运行代码时,它的行为会有所不同 我想从一些HTML代码中解析整个段落 这是我的正则表达式 description = ad_page.body.scan(/(?<=<span id="preview-local-desc">).+(?=<\/span>)/m) description=ad_page.body.scan(/(?除了需要非贪婪匹配之外: /(?<=<span

可能重复:

我在rubular.com上测试了我的正则表达式,它可以工作,但当我运行代码时,它的行为会有所不同

我想从一些HTML代码中解析整个段落

这是我的正则表达式

description = ad_page.body.scan(/(?<=<span id="preview-local-desc">).+(?=<\/span>)/m)
description=ad_page.body.scan(/(?除了需要非贪婪匹配之外:

/(?<=<span id="preview-local-desc">).+?(?=<\/span>)/m
/(?除了需要非贪婪匹配之外:

/(?<=<span id="preview-local-desc">).+?(?=<\/span>)/m

/(?如果您拥有或控制文件的格式,则使用正则表达式解析XML或HTML对于琐碎的任务几乎没有问题。如果您不拥有或控制文件的格式,则对文件进行简单更改可能会破坏正则表达式

使用解析器可以避免这个问题;我用解析过一些可怕的XML,但它甚至没有注意到。在编写了一个处理1000多个提要的RSS聚合器之后,我就迷上了使用解析器

require 'nokogiri'

html = '<span id="preview-local-desc"> I want to pick up everything typed here.
Paragraphs, everything.
</span>'

doc = Nokogiri.HTML(html)
doc.at('span').text
# => " I want to pick up everything typed here.\n    Paragraphs, everything.\n    "
如果有多个
标记,而您只需要此标记:

doc.at('span#preview-local-desc').text
# => " I want to pick up everything typed here.\n    Paragraphs, everything.\n    "

如果您拥有或控制文件的格式,则使用正则表达式解析XML或HTML对于琐碎的任务来说几乎是可以的。如果您不拥有或控制文件的格式,则对文件进行简单更改可能会破坏正则表达式

使用解析器可以避免这个问题;我用解析过一些可怕的XML,但它甚至没有注意到。在编写了一个处理1000多个提要的RSS聚合器之后,我就迷上了使用解析器

require 'nokogiri'

html = '<span id="preview-local-desc"> I want to pick up everything typed here.
Paragraphs, everything.
</span>'

doc = Nokogiri.HTML(html)
doc.at('span').text
# => " I want to pick up everything typed here.\n    Paragraphs, everything.\n    "
如果有多个
标记,而您只需要此标记:

doc.at('span#preview-local-desc').text
# => " I want to pick up everything typed here.\n    Paragraphs, everything.\n    "

非常感谢。使用HTML解析器。我从未使用过ruby,但我保证有一个,可能在标准库中。我会去寻找一个。非常感谢你的帮助。Nokigiri是你的朋友,这里有:+1链接到有史以来最棒的SO线程。这工作非常完美,立即。非常感谢。请使用HTML解析器。我从未使用过ruby,但我保证它存在,可能在标准库中。我会去找一个。非常感谢你,我非常感谢你的帮助。Nokigiri是你的朋友:+1,用于链接到有史以来最棒的SO线程。