1

TwitterのすべてのRTシナリオに一致する正しい正規表現を見つけようとしています(Twitterの新しいリツイートAPIが待ちきれません)。私の見方では、RTは、Twitterから返された文字列の最初、中間、または最後にあります。したがって、この正規表現の最初と最後に何かが必要です。

([Rr])([Tt])

何を試しても、1つの正規表現ですべてのシナリオを一致させることはできません。
私は試した

[^ | \ s +]

RTが文字列の先頭または1つ以上の空白文字の後に表示されるシナリオに一致しますが、文字列またはRTの末尾では同じようには機能しませんでした。
私は試した

[\ s + | $]

「pre」と同じように、RTが文字列の最後に表示されるか、それに続く空白文字が1つ以上ある場合に一致しますが、機能しませんでした。

誰かが私がここで間違っていることを説明できますか?ヘルプや提案は大歓迎です(いつものように:))

4

2 に答える 2

7

あなたはおそらく次のようなもので最も幸せになるでしょう:

/\brt\b/i

これは、の孤立したインスタンスRT(つまり、単語の境界で囲まれている)を検出/iし、正規表現の最後にある修飾子を使用して大文字と小文字を区別しないようにします。

「Art」や「Quartz」などの単語を含むランダムなツイートが実際にはリツイートであると思わないように、単語の境界が必要です。それでも、誤検知が発生します。

デフォルトでは、正規表現は文字列内のどこにでも一致する可能性があります。したがって、実際にそれが何であるか、または存在するかどうかを気にしない場合は、一致の前後に何が一致するかを考慮する必要はありません。

于 2009-09-22T18:53:55.180 に答える
3
if(preg_match('/\brt\s*@(\w+)/i', $tweet, $match))
    echo 'Somebody retweeted ' . $match[1] . "\n";
于 2009-09-22T18:58:23.383 に答える