Domanda

Sto cercando di trovare il giusto espressioni regolari per abbinare tutti gli scenari RT su Twitter (non vedo l'ora di nuova API di Twitter Retweet). Il mio modo di vedere, RT di può essere all'inizio, al centro o alla fine della stringa restituita da Twitter. Così, ho bisogno di qualcosa all'inizio e alla fine di questa espressione regolare:

  

([Rr]) ([tt])

Non importa quello che provo, non riesco a corrispondere tutti gli scenari in un'espressione regolare.
Ho cercato

  

[^ | \ s +]

per abbinare lo scenario in cui apparirà la RT o all'inizio della stringa o dopo uno o più caratteri di spaziatura, ma non ha funzionato lo stesso per la fine della stringa o RT.
Ho cercato

  

[\ s + | $]

di corrispondere a un caso in cui la RT appaiono sia alla fine della stringa o c'è uno o più caratteri di spaziatura seguenti esso, come con il 'pre' -. Non ha funzionato

Qualcuno può spiegare che cosa sto facendo male qui? Qualsiasi aiuto o suggerimenti saranno molto apprezzati (come sempre :))

È stato utile?

Soluzione

Probabilmente sarete più felice con qualcosa di simile:

/\brt\b/i

che troverà casi isolati di RT (cioè, circondato da word-confini), e utilizzare il modificatore /i alla fine della regex per renderlo maiuscole e minuscole.

Si desidera che i confini di parola in modo che non finiscano per pensare tweet casuali che contengono parole come "arte" e "Quartz" sono in realtà retweet. Anche allora, sta andando ad avere falsi positivi.

Per impostazione predefinita, un'espressione regolare può (e vuole) partita in qualsiasi punto all'interno di una stringa, quindi non è necessario per tenere conto di ciò che può precedere o seguire il tuo partner se davvero non si cura di cosa si tratta o se è presenti.

Altri suggerimenti

if(preg_match('/\brt\s*@(\w+)/i', $tweet, $match))
    echo 'Somebody retweeted ' . $match[1] . "\n";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top