-1

我正在尝试从 Scala 中以下页面的页面源中提取日期 2013 年 9 月 11 日:

http://www.thehindubusinessline.com/markets/todays-pick/exide-industries-rs-1312-buy/article5117122.ece

我正在使用的正则表达式是:

val dateregex = "</span>//s+[a-zA-Z0-9,:;& \t]+//s+</div>".r

然后将其用作:

val dates = dateregex findAllIn content2

其中 content2 是页面源内容

我没有输出。任何人都可以建议如何修改我的正则表达式吗?

4

1 回答 1

0

你交换了 scape 字符。您的表达效果很好,只需使用\\s+

scala> val dateregex = "</span>\\s+[a-zA-Z0-9,:;& \t]+\\s+</div>".r
dateregex: scala.util.matching.Regex = </span>\s+[a-zA-Z0-9,:;&     ]+\s+</div>

scala> val d = dateregex findAllIn source
d: scala.util.matching.Regex.MatchIterator = non-empty iterator

scala> d.toSet
res9: scala.collection.immutable.Set[String] = 
Set(</span>
September 11, 2013:&nbsp;&nbsp;
</div>)

但是,如果您只想获得日期,那就有点太“贪婪”了。

此外,如果您将其应用于整个页面,请考虑匹配 div class="article-dateline",或者更好地查询它,然后应用您的正则表达式。

我会改用这个正则表达式:
编辑:将示例更改为使用@pagoda_5b 建议的三引号,以避免双引号

val dateregex = new scala.util.matching.Regex("""</span>\s+([a-zA-Z]+)\s+([0-9]+),\s+([0-9]+)""","month","day","year")
val d = dateregex findFirstIn source match { 
    case Some(dateregex(month,day,year)) => println(s" Month= $month, Day=$day, Year=$year")
    case None => println("No Match") 
}

result> Month= September, Day=11, Year=2013
于 2013-09-25T15:59:07.850 回答