gpt4 book ai didi

ruby - 用于捕获 html 标签内的多个项目的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:06 27 4
gpt4 key购买 nike

我正在尝试完成一项作业,我应该编写一个 Ruby 正则表达式来捕获 html 标记之间的项目,但我真的被卡住了。我到处搜索,但只能找到有关使用 html 解析器和其他我认为不允许使用的程序的建议,因为到目前为止我们只学习了正则表达式。

示例文本是:

<span id="animal_display">
<a href="/b/bird">Bird</a>
<a href="/c/cat">Cat</a>
<a href="/c/dog">Dog</a>
</span>

我正在尝试捕捉

使用这个正则表达式,我能够得到第一次出现:

 /<span id="animal_display">.*?<[^>]+>(.*?)<\/[^>]+>.*<\/span>/m

我可以用这个得到所有三个,但我希望能够在可能包含三个以上项目的列表上使用正则表达式:

 /<span id="animal_display">\s*<[^>]+>\s*(.*?)<\/a>.\s*<[^>]+>\s*(.*?)<\/a>.\s*<[^>]+>\s*(.*?)<\/a>.<\/span>/

是否有更通用的正则表达式可以用于未指定数量的项目?任何建议将不胜感激。

最佳答案

这不是一个完整的答案,但有时可以通过从另一个方向解决问题来简化复杂的捕获正则表达式——使用 split:

html  = '...'
r = / <a[^>]*>\s* | <\/a>[^<]+ /mx
parts = html.split(r)

parts.each { |p| puts p.inspect }

# Output
"<span id=\"animal_display\"> "
"Bird"
""
"Cat"
""
"Dog"
"</span>"

关于ruby - 用于捕获 html 标签内的多个项目的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13576578/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com