我遇到了以下问题:
有一个这样的XPath(正如你所看到的相当长):
'//h2[contains(text(),"Kontakt")]/../following-sibling::div[contains(@class,"body") and child::dl[contains(@class,"horizontal")]]'
现在,为了使其更具可读性,我尝试使用 Heredoc 将其拆分为多行:
xpath = <<-XPath.gsub(/s+/,'')
//h2[contains(text(),"Kontakt")]/..
/following-sibling::div[contains(@class,"body") and
child::dl[contains(@class,"horizontal")]]
XPath
但是,问题是.gsub(/s+/,'')
将删除所有空格。我已经尝试了不同的组合,只是删除n
或.strip
,但我似乎找不到输出 xpath 的解决方案,如上所示。
有什么吗?
您尝试以不同的方式处理相同的情况(第 1→2 个字符串和第 2→3 个字符串):在第一个案例中连接字符串,在后一种情况下插入空格。需要一个人工智能来理解你的意思:)
我建议您不要在空格位置断开字符串。在这种情况下/s*ns*|As+|s+Z/m
正则表达式(删除用空格、开头和尾随空格包围的回车符)将起作用:
xpath = <<-XPath.gsub(/s*ns*|As+|s+Z/m,'')
//h2[contains(text(),"Kontakt")]/..
/following-sibling::div[contains(@class,"body") and child
::dl[contains(@class,"horizontal")]]
XPath
# "//h2[contains(text(),"Kontakt")]/../following-sibling::div[contains(@class,"body") and child::dl[contains(@class,"horizontal")]]"