【发布时间】:2011-05-13 01:39:30
【问题描述】:
我试图在 Nokogiri 中定义一个自定义 CSS 伪类,但遇到了一些意外字符问题。
我以Node 文档中的示例为例,并尝试根据我的需要对其进行修改。我想将正则表达式与 node.text 值匹配,如下所示:
node.css('script:regex("[\"\']([^/s]+)[\"\']")', Class.new {
def regex node_set, regex
node_set.find_all { |node| node.text =~ /#{regex}/ }
end
}.new)
问题在于 Node#css 只接受字符串参数。 #regex 基本上是一个方法调用,它的参数也是一个字符串。当我运行这段代码时,我会得到类似的东西:
Nokogiri::CSS::SyntaxError (unexpected '\"' after ''(?i-mx:[\'')
我已经尝试单/双转义引号,但我仍然得到这个或意外的'['。如何将单引号/双引号传递给自定义 css 方法参数?
我在此期间所做的只是匹配“脚本”,然后使用正则表达式匹配器遍历节点集。使用自定义的伪 css 类会更有用,因为它更容易重用。
【问题讨论】: