Как сопоставить последний URL в строке, содержащей несколько URL, используя регулярные выражения? - PullRequest
2 голосов
/ 13 июня 2010

Я хочу написать регулярное выражение, соответствующее URL-адресу, который заканчивается на ".mp4", учитывая, что в строке несколько URL-адресов.

Например, для следующей строки:

"http://www.link.org/1610.jpg","Debt","http://www.archive.org/610_.mp4","66196517"

Использование следующего шаблона соответствует от первого http до mp4.

(http:\/\/[^"].*?\.mp4)[",].*?

Как можноЯ заставляю его совпадать только с последним URL-адресом?

Обратите внимание, что строки могут содержать любое количество URL-адресов и любые промежуточные.Но только последний URL содержит .mp4 окончание.

Ответы [ 2 ]

3 голосов
/ 13 июня 2010

Использование:

.*"(http:\/\/[^"].*?\.mp4)".*

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

Кстати, кусок, который у вас был в конце ([",]), был не совсем верным.Этот шаблон означает совпадение либо " ИЛИ ,, когда я подозреваю, что вы на самом деле имеете в виду совпадение с этой последовательностью (на основе вашей строки выборки).

Наконец, вам не нужно делать жадные символы последнего шаблона,Вам это вообще не нужно, если вы делаете поиск, а не пытаетесь сопоставить всю строку.

0 голосов
/ 13 июня 2010

Попробуйте с

,\s*"(http://[^"]*?\.mp4)"\s*,\s*.*$

(PCRE не использует / в качестве разделителя, вместо этого используется, например, |); он соответствует http://www.archive.org/610_.mp4, если "открывает и закрывает ссылку, то есть " link " не допускается; в противном случае добавьте \ s *? для соответствия этим пробелам. Еще одно ошибочное предположение: ссылка является последней ссылкой, но не последний элемент, если это не так, mp4)"$ может быть окончанием RE вместо того, что используется сейчас.

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