【问题标题】:Using regex in XPath?在 XPath 中使用正则表达式?
【发布时间】:2020-11-21 06:01:38
【问题描述】:

我在一个 JS 函数中使用以下 XPath 指令来突出显示网页上的某些关键字:

var xpath = "//text()[contains(., \"" + keyword + "\")]";

关于如何重写它以支持正则表达式的任何想法?我尝试了各种方法,但似乎没有任何效果!

【问题讨论】:

标签: javascript regex xpath


【解决方案1】:

你可以重写

var xpath = "//text()[contains(., \"" + keyword + "\")]";

使用正则表达式

var xpath = "//text()[matches(., \"" + keyword + "\")]";

然后keyword 可以是一个正则表达式,而不仅仅是一个字符串。

但是,matches() 等正则表达式函数需要 XPath 2.0+。浏览器中的原生 XPath 库仅支持 XPath 1.0。

另见

【讨论】:

  • 我已经尝试过使用“匹配”而不是“包含”,但它不起作用!但是,您的回答对我非常有用,因为现在很清楚为什么这不起作用......浏览器中的 XPath 库仅支持 XPath 1.0!感谢您的回答,以及您提供的链接。很有帮助!
  • Kenneth,你认为 xpath.js (github.com/ilinsky/xpath.js) 对我有帮助吗?如果是这样,根据我上面已经提供的代码,XPath 查询应该是什么样子?还有 jquery-xpath.js (github.com/ilinsky/jquery-xpath)。我想提一下,我使用 Tampermonkey 运行我的突出显示脚本。
  • 抱歉,有太多未定义的要求,我无法根据您的评论为您提供建议,这不是提供设计建议的正确论坛。我不会进一步扩展此对话框,但会留下这样的想法:如果您只是按照当前 XPath 的建议搜索文本,并且正则表达式对您很重要,请考虑放弃 XPath 并直接使用浏览器对正则表达式的内置支持.祝你好运。
  • 当然,我完全明白。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 2011-05-02
  • 2022-01-11
  • 2011-02-14
  • 2011-12-23
  • 2018-07-14
  • 1970-01-01
相关资源
最近更新 更多