Регулярное выражение Действительное упоминание в Твиттере

я пытаюсь найти регулярное выражение, которое соответствует, если твит является истинным упоминанием. Следует отметить, что строка не может начинаться с «@» и не может содержать «RT» (без учета регистра), а «@» должно начинать слово.

В примерах я прокомментировал желаемый результат

Некоторые примеры:

function search($strings, $regexp) {
    $regexp;
    foreach ($strings as $string) {
        echo "Sentence: \"$string\" <- " .
        (preg_match($regexp, $string) ? "MATCH" : "NO MATCH") . "\n";
    }
}

$strings = array(
"Hi @peter, I like your car ", // <- MATCH
"@peter I don't think so!", //<- NO MATCH: the string it's starting with @ it's a reply
"Helo!! :@ how are you!", // NO MATCH <- it's not a word, we need @(word) 
"Yes @peter i'll eat them this evening! RT @peter: hey @you, do you want your pancakes?", // <- NO MATCH "RT/rt" on the string , it's a RT
"Helo!! ineed@aser.com how are you!", //<- NO MATCH, it doesn't start with @
"@peter is the best friend you could imagine. RT @juliet: @you do you know if @peter it's awesome?" // <- NO MATCH starting with @ it's a reply and RT
);
echo "Example 1:\n";
search($strings,  "/(?:[[:space:]]|^)@/i");

Текущий вывод:

Example 1:
Sentence: "Hi @peter, I like your car " <- MATCH
Sentence: "@peter I don't think so!" <- MATCH
Sentence: "Helo!! :@ how are you!" <- NO MATCH
Sentence: "Yes @peter i'll eat them this evening! RT @peter: hey @you, do you want your pancakes?" <- MATCH
Sentence: "Helo!! ineed@aser.com how are you!" <- MATCH
Sentence: "@peter is the best friend you could imagine. RT @juliet: @you do you know if @peter it's awesome?" <- MATCH

РЕДАКТИРОВАТЬ:

Мне это нужно в регулярном выражении, потому что его можно использовать в MySQL и других языки тоже. Я не ищу никакого имени пользователя. Я только хочу знать если строка это упоминание или нет.

9
задан Toon Krijthe 7 September 2012 в 12:05
поделиться