Регулярное выражение, совпадающее с одним из двух идентификаторов видео в URL Видео Google - PullRequest
2 голосов
/ 13 мая 2010

Мне нужно получить идентификатор видео с URL Видео Google. Существует два типа URL, которые мне нужно сопоставлять:

http://video.google.com/videoplay?docid=-3498228245415745977#

, где я должен быть в состоянии соответствовать -3498228245415745977 (обратите внимание на тире; -) и

video.google.com / videoplay? DocId = -3498228245415745977 # DocId = 2728972720932273543

где мне нужно соответствовать 2728972720932273543. Есть ли хорошее регулярное выражение, которое может соответствовать этому?

Это то, что я получил до сих пор: @"docid=(-?\d{19}+)", поскольку кажется, что идентификатор видео состоит из 19 символов, за исключением случаев, когда перед ним стоит тире.

Я использую C # (из которого у меня очень мало опыта), если это что-то изменит.

P.s. Буду также признателен вам за обзор моих регулярных выражений для YouTube (@"[\?&]v=([^&#])";), RedTube (@"/(\d{1,6})") и Vimeo (@"/(\d*)").

Я не ожидаю, что пользователи будут вводить полный URL-адрес и поэтому не будут совпадать с ^http://\\.?sitename+\\.\\w{2,3}.

Ответы [ 2 ]

2 голосов
/ 13 мая 2010

В следующем фрагменте RegEx используется так называемый отрицательный запрос, чтобы убедиться, что после совпадения нет ни одной части строки, содержащей #docid:

docid=(-?\d{19}(?!\#docid=))

(?!\#docid=) является негативной прогнозной частью RegEx. Если вы хотите узнать больше об этом, вы можете посмотреть на http://www.regular -expressions.info / lookaround.html

Надеюсь, это поможет вам

EDIT: Если вы еще не получили его, вы должны получить "The Regulator 2.0" от sourceforge. Это инструмент для разработки и тестирования регулярных выражений. Я нахожу это очень полезным, когда я разрабатываю регулярные выражения.

0 голосов
/ 25 сентября 2010

используйте это RE:

docid=-([0-9]*)

Результат

Array
(
    [0] => docid=-3498228245415745977
    [1] => 3498228245415745977
)

Я тестировал его на Java, PHP, awk, perl.

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