Попытка найти Twitter RT с регулярными выражениями и PHP

StackOverflow https://stackoverflow.com/questions/1461911

  •  13-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь найти правильное регулярное выражение, соответствующее всем сценариям RT в Твиттере (не могу дождаться нового API ретвитов Твиттера).Насколько я понимаю, RT может находиться в начале, середине или конце строки, возвращаемой из Twitter.Итак, мне нужно что-то в начале и конце этого регулярного выражения:

([Рр])([Тт])

Что бы я ни пытался, я не могу сопоставить все сценарии в одном регулярном выражении.
Я пытался

[^|\s+]

чтобы соответствовать сценарию, в котором RT появится либо в начале строки, либо после одного или нескольких символов пробела, но это не сработало одинаково для конца строки или RT.
Я пытался

[\s+|$]

чтобы соответствовать случаю, когда RT появляется либо в конце строки, либо за ним следует один или несколько пробельных символов, как и в случае с «pre» - это не сработало.

Может кто-нибудь объяснить, что я здесь делаю не так?Любая помощь или предложения будут высоко оценены (как всегда :) )

Это было полезно?

Решение

Вероятно, вам больше всего понравится что-то вроде:

/\brt\b/i

Который найдет отдельные экземпляры RT (то есть окруженный границами слов) и используйте /i модификатор в конце регулярного выражения, чтобы сделать его нечувствительным к регистру.

Вам нужны границы слов, чтобы вы не думали, что случайные твиты, содержащие такие слова, как «Искусство» и «Кварц», на самом деле являются ретвитами.Даже в этом случае у него будут ложные срабатывания.

По умолчанию регулярное выражение может (и будет) соответствовать любому месту внутри строки, поэтому вам не нужно учитывать, что может предшествовать или следовать за вашим совпадением, если вас действительно не волнует, что это такое и присутствует ли оно.

Другие советы

if(preg_match('/\brt\s*@(\w+)/i', $tweet, $match))
    echo 'Somebody retweeted ' . $match[1] . "\n";
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top