Вы меняли местный характер. You выражение отлично работает, просто используйте \\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:
</div>)
Однако, это немного слишком «жадность», если вы хотите получить только дату.
Кроме того, если вы применяете это ко всей странице, рассмотрите возможность сопоставления div class = "article-dateline" или лучше запросите его, а затем примените ваше регулярное выражение.
Я хотел бы использовать это регулярное выражение вместо:
EDIT: Изменен пример использования тройные кавычки как это было предложено @ 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
вы, вероятно, имел в виду '\ s +' вместо ' // s + ', хотя этот шаблон, похоже, слишком много ... – Jerry
Я использовал это, наконец, для успешного завершения даты: val dateregex =" [a-zA-Z0-9,] +: \\ s + ".r – user2320655