Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   RegExp и теги (https://javascript.ru/forum/events/26336-regexp-i-tegi.html)

K313 05.03.2012 12:33

RegExp и теги
 
Чё та не получается разбить строку по тегам
var str='<g id="svg_1"><path my="" stroke-width="4" stroke="#f0f" fill="#ff0" d="M10,0L-10.07,80.3L0,80L50,50Z"\><circle r="20" cx="50" cy="50" stroke-width="3" stroke="#0f0" fill="none"/><path my="" stroke-width="1" stroke="#07f" fill="none" d="M0,30L60,0L0,60L-60,0Z"/><rect width="40" height="20" rx="5" ry="5" x="-20" y="30" stroke-width="6" stroke="#00f" fill="#0ff"/></g>abc';
// 
str.match(/<[a-z]+/g);// выдаёт <g, <path, ... и тд, но как ставлю точку выдаёт всю строку целиком до конца...
//
str.match(/<[a-z]+.*/g>// а мне надо куски только до следующего закрывающего тега
Пробовал и теги экранировать и вместо звёздочки ставил {1,100} - так делит но мне не до ста надо, а до тега, не врублюсь ни как...
Подскажите пожалуйста, в чём дело?

K313 05.03.2012 12:45

Вот блин!!!
<[a-z]+.*?\/?>
Нечаяно поставил "?" после звёздочки и заработало! Но только теперь не понимаю какого он там нужен???

nerv_ 05.03.2012 13:05

http://javascript.ru/forum/misc/2493...ng-bbcode.html

K313 06.03.2012 00:52

спасибо за ссылку, пригодиться...
Но я так и не понял как знак вопроса влияет на правило точки со звёздочкой, по идее и так подразумевается любой символ 0 и более раз, но при этом без знака вопроса совпадение не останавливается на следующем закрывающем теге а продолжается до конца строки.
:help:

рони 06.03.2012 01:31

K313,
Жадная и ленивая квантификация
Варианты для вашего поиска
str.match(/<[^>]+>/g)
str.match(/<.*?>/g)

K313 06.03.2012 03:36

Спасибо что ткнули носом! :)
Теперь всё понял!


Часовой пояс GMT +3, время: 06:15.