私は大学院生で、会社の壁に公開されている Facebook のコメントを使って調査を行っています。コメントのテキストではなく、頻度だけに興味があります。
そのため、必要なものに一致するように正規表現を行うことを検討していますが、まだ正規表現が得意ではありません。(また、html ではなく、テキスト形式のコメントのみを持っています。それらはすべてテキスト ファイルにあります。)
これは、各コメントの最後の行を解析する必要があることを意味します。次の正規表現を使用します。
(January|February|March|April|May|June|July|August|September|October|November|December \d+ at \d+:\d+[ap]m)|(Yesterday at \d+:\d+[ap]m)|(\d+ hours ago)|(About an hour ago) \D*?(\d+)
いくつかのサンプル:
September 5 at 8:40pm · Like · 23
Yesterday at 5:35am · Like
10 hours ago · Like · 2
6 hours ago · Like
私は得ることを期待しています:
グループ 1: 次のいずれか: [月] [日] または 昨日の午前/午後 または # 時間前 グループ 2: いいねの数
Python でのコード (超 Python 風でない場合は申し訳ありません):
import re
for line in open('comments.txt','r'):
strPat = '(January|February|March|April|May|June|July|August|September|October|November|December \d+ at \d+:\d+[ap]m)|(Yesterday at \d+:\d+[ap]m)|(\d+ hours ago)|(About an hour ago) \D*?(\d+)'
pat1 = re.compile(strPat, line)
m = re.match(pat1, line)
if m:
print m.group(1), m.group(2)
出力例:
September 5 at 8:40pm None
None None
まず、「8 時間前」の部分をキャプチャしていません。第二に、どのケースでもいいねの数を把握していないようです。私の正規表現パターンには何かおかしなところがあるに違いありません。どんな助けでも大歓迎です。