Я относительно новичок в RegEX, и я пытался придумать, как лучше всего изолировать имя файла, которое существует в URL-адресе.
Структура URL-адреса такая. с несколькими примерами.
https://www.somefileshare.com/s/fdfdeertyyus/Luke%20Movie%202.m4v?dl=0
https://www.somefileshare.com/s/fddderttfdf/Ariana%20Movie%20.mov?dl=0
https://www.somefileshare.com/s/fdderfddefdf/Dans%20AudioFile.m4a?dl=0
часть URL-адреса перед именем файла (в первом примере) / fdfdeertyyus является динамической, поэтому не может использоваться в качестве квалификатора. Также расширение видео не является статическим и может иметь множество типов, например: .mov .mp4 .wma .m4a.
Меня интересует имя файла: Luke% 20Movie% 20.m4v.
Следующее регулярное выражение:
(?<=.com/s/).*?(?=\?dl)
дает
fdfdeertyyus/Luke%20Movie%202.m4v
fddderttfdf/Ariana%20Movie%20.mov
fdderfddefdf/Dans%20AudioFile.m4a
в соответствии с приведенными примерами. Тестовый редактор, который я использую для выделения имени файла, требует \ перед косой чертой.
Это требование, чтобы я использовал REGEX для выполнения этого, и язык, на котором будет выполняться REGEX, варьируется от C до C++, Java и Swift.
Любой совет будет очень признателен.
На каком языке ты говоришь? Мне кажется, вы должны использовать функцию своего языка (PHP? Ruby?), Которая позволяет анализировать URL-адреса, а не пытаться делать это самостоятельно с помощью регулярных выражений.
jrook, спасибо за предложение. Из-за характера продукта я вынужден использовать Regex для решения. Я считаю, что это возможно, но я не разбираюсь в тонкостях RegEx.
Привет, Энди! Требование RegEx для проекта, над которым я работаю, заключается в том, что я выполняю эту задачу в REGEX. Я хотел бы иметь возможность использовать для этого простой разделитель строк, но, как я уже сказал, RegEX является обязательным требованием.
Как насчет ([^/]+?)\.m4v
Предполагая, что структура url останется прежней, как насчет этого? regex101.com/r/ygZ2DS/3
Если вы приведете больше примеров, это поможет другим лучше помочь вам!
грех, вот и все, спасибо тебе большое. Требуется только еще одна вещь, и это относится к запросу jrooks для лучшего понимания URL-адреса с большим количеством примеров. Я предоставлю это в отредактированной версии вопроса. Однако для ясности структура URL-адреса остается неизменной в URL-адресе. Я не перестаю понимать синтаксис вашего подхода sin, но, похоже, он ищет от конца строки до первого появления косой черты, и захват заканчивается на m4v. Расширение видео может меняться с m4v на mp4 на mov, wma и т. д. Я внесу больше ясности.
Что ж, благодаря греху и шутке я закончил работу над ответом. Хотя меня немного смущает грех, как же +? который заявлен как ленивый, ему удается нацелить последнюю косую черту /. Вся эта часть меня сбивает с толку, если у вас есть время, было бы здорово получить объяснение по этому поводу. Однако следующая строка regEx выполняет задание ([^ /] +?) (? = \? Dl), и я включу ее в отредактированный текст. Спасибо вам обоим за ваши ответы, которые помогли мне прийти к окончательному решению.
Я думаю, что парсер URL-адресов - лучший выбор для этой задачи, чем регулярное выражение. Попробуйте это для себя и посмотрите: browserling.com/tools/url-parse