2

ツイートを見て、ツイートで言及されている株に関する情報を引き出すようなものを書こうとしています。人々はツイッターで銘柄記号を参照するために$を使用しますが、私は$を逃れることはできません。

私はまた、価格の言及などに一致させたくないので、基本的に$1500ではなく$AAPLに一致します

こんな感じだと思っていました

\b\$[a-zA-Z].*\b

複数の一致IDがある場合は、何らかの方法でそれらをループするのが好きなので、次のようになります。

while ((tweet = reg.exec(sym_pat)) !== null) {
   //replace text with stock data.
}

この式により、予期しない不正なトークンエラーが発生します

 var symbol_pat = new RegExp(\b\$[a-z]*);

次の問題を見たい場合は、助けてくれてありがとう $.eachスコープ内のJavascriptAJAXスコープに遭遇しました

4

2 に答える 2

2

さて、あなたはマッチを実際の株価に置き換えたいと言っています。したがって、一致するすべての要素(株式相場表示名)を取得する必要があります。次に、一致するたびに、それを株式価値に置き換えます。

答えはその文と非常によく似て「読む」でしょう。

作業する特定のツイートの内容である変数があると仮定しtweetます。

tweet.match(/\b\$[A-Za-z]+\b/g).forEach(function(match) {
    // match looks like '$AAPL'
    var tickerValue = lookUpTickerValue(match);
    tweet.replace(match, tickerValue);
});

これは、指定された株式名のティッカー値を取得して置き換えるロジックがあることを前提としています(一致するものが見つからない場合は元の値を返す可能性があるため、「バーバラ・ストライサンドは$ ATAN ")です。

于 2012-05-18T00:55:16.670 に答える
1
var symbol_pat = new RegExp('\\b\\$[a-z]+\\b','gi');
// or
var symbol_pat = /\b\$[a-z]+\b/gi;

また、何らかの理由でJSは単語の先頭をで計算できず\b、末尾の単語をキャッチするだけです。

編集:銘柄記号を置き換える場合は、基本的なreplace方法を関数で使用し、そのデータを事前定義された値に置き換えることができます。

var symbol_pat = /(^|\s)(\$[a-z]+\b)/gi;
var stocks = {AAPL:1,ETC:2}
var str = '$aapl ssd $a a$s$etc $etc';
console.log(str);
str = str.replace(symbol_pat, function() {
    var stk = arguments[2].substr(1).toUpperCase();
    // assuming you want to replace $etc as well as $ETC by using
    // the .toUpperCase() method
    if (!stocks[stk]) return arguments[0];
    return arguments[0].replace(arguments[2],stocks[stk]);
});
console.log(str);
于 2012-05-18T00:53:10.910 に答える