Контекст
Используя Ruby, я анализирую строки, выглядящие так:
Тип с идентификатором ...
[Image=4b5da003ee133e8368000002]
[Video=679hfpam9v56dh800khfdd32]
... с дополнительными параметрами от 0 до n, разделенными @ ...
[Image=4b5da003ee133e8368000002@size:small]
[Image=4b5da003ee133e8368000002@size:small@media:true]
В этом примере:
[Image=4b5da003ee133e8368000002@size:small@media:true]
Я хочу получить:
- [Изображение = 4b5da003ee133e8368000002 @ размера: маленькие @ СМИ: истинный]
- Изображение
- 4b5da003ee133e8368000002
- размер: маленький
- СМИ: правда
Проблема
Прямо сейчас, используя это регулярное выражение:
(\[([a-zA-Z]+)=([a-zA-Z0-9]+)(@[a-zA-Z]+:[a-zA-Z]+)*\])
Я получаю ...
- [Изображение = 4b5da003ee133e8368000002 @ размера: маленькие @ СМИ: истинный]
- Изображение
- 4b5da003ee133e8368000002
- @ СМИ: правда
Что я делаю не так? Как я могу получить то, что я хочу?
PS: Все результаты скопированы с http://rubular.com/, что хорошо для отладки регулярных выражений. Пожалуйста, используйте это, если это может помочь вам помочь мне:)
Редактировать: если невозможно разделить все параметры, как я могу получить это:
- [Изображение = 4b5da003ee133e8368000002 @ размера: маленькие @ СМИ: истинный]
- Изображение
- 4b5da003ee133e8368000002
- @ размер: маленькие @ СМИ: правда