如何创建 nokogiri 不区分大小写的文本 * 搜索?

发布于 2024-09-25 05:17:47 字数 338 浏览 6 评论 0原文

目前,

words = []
words << "philip morris"
words << "Philip morris"
words << "philip Morris"
words << "Philip Morris"
for word in words
  doc.search("[text()*='#{word}']")
end

当我使用 hpricot 时,我发现在 gem 中可以将结果小写,这样我就可以将所有搜索保持小写,但是 nokogiri 很难找到可以做到这一点的地方。有人知道有办法做到这一点吗? 非常感谢您抽出时间

Currnetly I am doing

words = []
words << "philip morris"
words << "Philip morris"
words << "philip Morris"
words << "Philip Morris"
for word in words
  doc.search("[text()*='#{word}']")
end

When I was using hpricot I found where to downcase the results within the gem so I could just keep all my searchs lowercase, however nokogiri has been quite difficult to find where one could even do that. Is anyone aware of a way to do this?
Thank you very much for your time

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

装迷糊 2024-10-02 05:17:47

lower-case XPath 函数不可用,但您可以使用 translate XPath 1.0 函数将文本转换为小写,例如英语字母表:

translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')

我似乎无法将其与 *= 运算符结合使用,但您可以使用 contains 来进行子字符串搜索,从而完成完整的操作:

doc.search("//*[contains(translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'philip morris')]")

The lower-case XPath function is not available but you can use the translate XPath 1.0 function to convert your text to lowercase e.g. for the English alphabet:

translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')

I couldn't seem to use this in combination with the *= operator but you can use contains to do a substring search instead, making the full thing:

doc.search("//*[contains(translate(text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'philip morris')]")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文