Регулярное выражение для захвата ссылки в квадратных скобках

Мне нужно поднять ссылку на YouTube из текста, который выглядит следующим образом:

[YouTube= HTTP://www.youtube.com/v/qpbAe2HyzqA&hl=en&fs=1&]

Кто-нибудь может помочь?

2 ответа

Решение

Попробуйте что-то вроде этого:

\[youtube=(https?://[^\]]+)\]

Вы могли бы использовать awk.

awk ' FS="[" {print $(NF) } ' file_with_text > temp.txt
awk ' FS="]" {print $(NF-1)} ' temp.txt > results.txt

Он состоит из двух частей, чтобы сделать его более понятным, и потому что awk странный, как это. Если вам нужен только URL, а не youtube= first, вам нужно запустить awk с разделителем файлов, например, FS="youtube=". Также awk может быть странным с вводом; если file_with_text имеет текст в первой строке, он может вести себя странно, и если файл заканчивается разделителем файлов, который вы выбрали, awk может выдавать ошибку (просто добавьте любой текст, кроме символа FS, в конец файла).

Редактировать: Удалена функция кота. Кажется менее ясным как педагогический ответ, но это более кратко.

Другие вопросы по тегам