Показать сообщение отдельно
  #1 (permalink)  
Старый 15.04.2013, 15:47
Новичок на форуме
Отправить личное сообщение для nixml Посмотреть профиль Найти все сообщения от nixml
 
Регистрация: 15.04.2013
Сообщений: 4

Парсинг собственных тегов
есть некая строка, например:
var string = "
начало строки 
[tag=tagname1]text1[/tag]
середина
[tag=tagname2]text25text[/tag]
 конец";

в ней есть самопальные теги, содержащие некие строки
теги могут отличаться только дополнительным атрибутом
а сама строка содержит символы "перевода строки"

если не использовать дополнительные атрибуты тегов, то доступ к содержимому можно получить следующим кодом:
var g = '[tag]1[/tag][tag]2[/tag]';
var q = g.match(/\[tag\](\n|\r|.)*?\[\/tag\]/g);
alert(q);

на выходе имею нужный мне массив
дальше я делаю .replace(/\[\/?tag\]/g, '')
но появилась задача отличать между собой содержимое одинаковых тегов, введя дополнительный атрибут.

и тут появилась проблема поиска еще одного вхождения, а именно атрибута тега
если чуть изменить регулярку, на
/\[tag=(.*)\](\n|\r|.)*?\[\/tag\]/g

то в результате я получаю строку [tag=tagname1]text1[/tag]середина[tag=tagname2]text25text[/tag]
таким образом регулярка захватывает лишние данные и все ломается
что мне нужно изменить, может почитать, чтобы починить свой код?
Ответить с цитированием