JavaScript
正規表現
reactjs
React

文字列からSNSのアカウント名・ハッシュタグ、URLを取り出す

はじめに

SNSのスクショ画像からアカウント名やハッシュタグ、短縮リンクなどを取り出すWebアプリを作ってみました。

その中で、OCRの結果から要素を取り出すための正規表現をメモ。

テスト用のテキストを用意

テスト用に以下のTwitterスクショ画像からCloud Vision APIで文字列を取得してみる。

. ホーム
合 g
koolweb37 | Web制作 @koolweb37・2h v
毎年こちらに、初詣2(Ca")
#初詣
#あけましておめでとう
#今年もよろしくね ift.tt/2A3kga2
たMii単理
9
u ゆーくりっどさんがリツイート
スケキヨ @sukekiyo56・18h
描き初め、柴犬パワードです。ことよろです
HAPPY
NEW
YEAR

さすがGoogle先生。
ただ、画像によっては「@」「#」などの記号やURLが誤認識する印象。歯がゆい❗

要素の抽出

const text = `
. ホーム
合 g
koolweb37 | Web制作 @koolweb37・2h v
毎年こちらに、初詣2(Ca")
#初詣
#あけましておめでとう
#今年もよろしくね ift.tt/2A3kga2
たMii単理
9
u ゆーくりっどさんがリツイート
スケキヨ @sukekiyo56・18h
描き初め、柴犬パワードです。ことよろです
HAPPY
NEW
YEAR
`;

// アカウント抽出
const accounts = text.match(/[@@][A-Za-z0-9._-]+/gm);
console.log(accounts);

// ハッシュタグ抽出
const tags = text.match(/[##][A-Za-zA-Za-z一-鿆0-90-9ぁ-ヶヲ-゚ー._-]+/gm);
console.log(tags);

// URL抽出
const urls = text.match(/([a-z0-9]|\.)+\.(com|net|jp|org|io|info|me|ma|gl|ly|gd|cc|nu|tt).*/gm);
console.log(urls);

出力

[ '@koolweb37', '@sukekiyo56' ]
[ '#初詣', '#あけましておめでとう', '#今年もよろしくね' ]
[ 'ift.tt/2A3kga2' ]