我从HTML文档正文中获取文本,如下所示。当我尝试正则表达式扫描术语"图表99"时,我得到一个不匹配的,即一个空数组。但是,在html中,我确实看到" Exhibit 99",尽管inspect元素用& nbsp99显示它。如何摆脱这些HTML字符并搜索"图表99"好像它是一个普通的字符串?
url = "https://www.sec.gov/Archives/edgar/data/1467373/000146737316000912/fy16q3plc8-kbody.htm"
doc = Nokogiri::HTML(open(url))
body = doc.css("body").text
body.scan(/exhibit 99/i)
答案 0 :(得分:2)
您可以使用:
body.scan(/exhibit\p{Zs}99/i)
来自documentation关于Unicode character’s General Category
:
/\p{Z}/ - 'Separator'
/\p{Zs}/ - 'Separator: Space'
它匹配空格或non-breaking space,但没有制表符或换行符。该字符串应以UTF-8编码。有关详细信息,请参阅此related question。
更宽松的正则表达式是:
body.scan(/exhibit\W99/i)
这允许exhibit
和99
之间的字母,数字或下划线以外的任何字符。它会匹配一个空格,一个标签,一个短划线......