尝试从维基百科页面中提取信息。最初我想确定哪些页面是关于公司的。我使用以下正则表达式来检查公司一词是否在短语“infobox”和第一个“|”之间字符,
val text = (...wikipedia page xml...)
val infobox_company = """\{\{.*(?i)infobox[^\|]*company[^\|]*\|""".r
val is_company = infobox_company findFirstIn text != None
现在我想要计算维基百科中存在的所有不同类型的信息框。我尝试改变我的正则表达式并在样本上测试它:
val infobox_regex = """\{\{.*(?i)infobox[^\|](.*)[^\|]*\|""".r
val test_str = "{{Infobox dot-com company | name = 'my_doc_com'}}"
val infobox_regex(info_type) = test_str
正则表达式模式不匹配,因此我得到了一个scala.MatchError。
我应该如何改变我的正则表达式以提取信息框类型(即“信息框”和“|”的第一个实例之间的子串?)
答案 0 :(得分:0)
感谢评论,解决方案是
val infobox_regex = """\{\{.*(?i)infobox(.*)[^\|]*\|""".r
val info_box_list = (for(m <- infobox_regex findAllMatchIn test_str) yield m group 1).toList