Пожалуйста, не используйте BBCode.Это зло .
BBCode ожил, когда разработчики были слишком ленивы, чтобы правильно разобрать HTML, и решили изобрести свой собственный язык разметки.Как и во всех ленивых продуктах, результат является полностью непоследовательным, нестандартным и широко принятым.
Попробуйте использовать более удобный для пользователя язык разметки, например Markdown (вот что такое StackПереполнение использует) или Текстиль .Оба имеют парсеры для Ruby:
Если вы все еще не хотите прислушиваться к моему совету и решили использовать BBCode, не изобретайте велосипед и не используйте BBCode parser .Чтобы ответить на ваш вопрос напрямую, есть наименее желательный вариант: используйте регулярное выражение.
/\[img\].*?\[\/img\]/
Как видно на rubular .Хотя я бы использовал /\[img\](.*?)\[\/img\]/
, поэтому он будет извлекать содержимое внутри тегов img
.Обратите внимание, что это довольно хрупкий файл и сломается, если есть вложенные теги img
.Отсюда и совет использовать парсер.