我正試圖用Scala解析元標記。我試着只是做這個用XML匹配,就像解析Scala中的HTML元標記
`html // meta ...` etc,
,但我得到一個畸形的XML錯誤,因爲這個特定頁面上的這些元標籤沒有結束標籤或... />
外殼。
所以以下HTML,
val html = """<meta name="description" content="This is some meta description">"""
我使用正則表達式如下匹配:
val metaDescription = """.*meta name="Description" content="([^"]+)"""".r
- 當我嘗試搭配
val metaDescription(desc) = html
我得到一個scala.MatchError。 - 當我嘗試
metaDescription.findAllIn(html)
並重復時,我得到整個字符串 - 不僅僅是描述。
我怎樣才能得到content
內的值,而不是別的?
編輯
我得到了我想要與結果:
metaDescription.findAllIn(html).matchData foreach {
desc => println(desc.group(1))
}
,但似乎像繞很長的路要走。有更好的解決方案嗎?
您應該使用html解析庫 –
要重複上述情緒,您應該使用html解析庫。 Html在創建自己的正則表達式時非常難以解析,讓其他人爲您完成工作。這也是SO的規範答案,看看任何有關使用正則表達式解析html的答案,並且您會發現使用解析庫會更好。 –