2015-10-14 49 views
0

试图从维基百科页面提取信息。本来我想确定哪些网页是关于公司的。我使用了以下正则表达式来检查公司这个词是否介于短语“信息框”和第一个“|”之间字符,使用Scala正则表达式提取子字符串

val text = (...wikipedia page xml...) 
val infobox_company = """\{\{.*(?i)infobox[^\|]*company[^\|]*\|""".r 
val is_company = infobox_company findFirstIn text != None 

现在我想要计算维基百科中存在的所有不同类型的信息框。我想改变我的正则表达式表达和测试它的样本:

​​3210

正则表达式模式不匹配,所以我得到一个scala.MatchError。

我该如何改变我的正则表达式来提取信息框类型(即“信息框”和“|”的第一个实例之间的子字符串)?

+1

捕捉组(第1组精确)检查了这一点https://regex101.com/r/kU4tF7/1 –

回答

0

多亏了评论,解决的办法是

val infobox_regex = """\{\{.*(?i)infobox(.*)[^\|]*\|""".r 
val info_box_list = (for(m <- infobox_regex findAllMatchIn test_str) yield m group 1).toList