-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

スケープ文字を交換しました。式は正常に機能します。次を使用して\\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 に答える