Как я могу исправить это регулярное выражение, которое извлекает идентификатор твита из URL-адреса Twitter? - PullRequest
1 голос
/ 26 февраля 2011

Я пытаюсь написать регулярное выражение, которое будет извлекать идентификатор твита из URL-адреса Twitter.

У меня есть этот вариант, который работает, когда в имени пользователя Twitter есть число:

'.*?\\d+.*?(\\d+)'

ruby-1.9.2-p0 > Regexp.new('.*?\\d+.*?(\\d+)',Regexp::IGNORECASE).match('https://twitter.com/#!/sportsguy33/status/41257488166686720')[1]
 => "41257488166686720" 
ruby-1.9.2-p0 > Regexp.new('.*?\\d+.*?(\\d+)',Regexp::IGNORECASE).match('http://twitter.com/#!/dailythunder/status/41382006113841153')[1]
 => "3" 

И этот, который работает, когда в имени пользователя Twitter нет числа

'.*?(\\d+)'

ruby-1.9.2-p0 > Regexp.new('.*?(\\d+)',Regexp::IGNORECASE).match('https://twitter.com/#!/sportsguy33/status/41257488166686720')[1]
 => "33" 
ruby-1.9.2-p0 > Regexp.new('.*?(\\d+)',Regexp::IGNORECASE).match('http://twitter.com/#!/dailythunder/status/41382006113841153')[1]
 => "41382006113841153" 

Как мне написать тот, который будет работать в любом случае?

Ответы [ 3 ]

4 голосов
/ 26 февраля 2011

Если идентификатор твита является последней частью URL, вы можете использовать:

'\/(\d+)$'

$ означает конец строки

2 голосов
/ 11 августа 2016

Я только что выпустил гем tweet_url для анализа URL в Твиттере.

require 'tweet_url'
tweet_url = TweetUrl.parse('https://twitter.com/yukihiro_matz/status/755950562227605504')
tweet_url.status_id  #=> 755950562227605504

На голову! Имейте в виду, что, возможно, существует URL-адрес типа https://twitter.com/sferik/status/540897316908331009/photo/1,, поэтому мы не можем просто извлечь последнюю числовую часть.

1 голос
/ 26 февраля 2011

Я бы посоветовал вам попробовать Рубуляр .

Rubular - это редактор регулярных выражений на основе Ruby. Это удобный способ проверки регулярных выражений при их написании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...