Регулярные выражения - получение только группы с захватом
Всем доброго времени суток...
Помогите разобраться с регулярными выражениями в JavaScript, в общей терминологии регулярок существует такой термин как "группа с захватом" как правило это круглые скобки "()", JavaScript судя по всему не исключение, но я никак не пойму как ограничить выборку именно этой самой группой с захватом, т.к. она вроде как и предназначена именно для этого. Читал, читал и вычитал, что вроде как многократный вызов *.exec решает эту головоломку... или я чего-то не понимаю, - или ничего он не решает. Имеем мы следующее. пусть мы поставили перед собой тривиальную задачу выдергивания чего либо МЕЖДУ (чаще всего показывают на примере извлечения содержимого тегов, давайте и мы поиграемся) исходный текст: Код:
<some>sdgsdgsd</some>\n<some>12312412</some> var result; var text = "<some>sdgsdgsd</some>\n</some>12312412</some>" var pattern = /<some>(.*?)<\/some>/g while ( (result = pattern.exec(text)) != null) { alert("Найдено " + result[0] + ": ("+ result[1]+") и ("+result[2]+")") alert("Дальше ищу с позиции "+result.lastIndex) } на выходе получаем что exec нашел полное совпадение, и ограниченное группой с захватом, итого ДВА (мне не надо ДВА, мне надо то что я обозначил группой с захватом!), более того дальше он не пошел, и самоудовлетворился отискав "<some>sdgsdgsd</some>" и "sdgsdgsd" Код:
result[0] = "<some>sdgsdgsd</some>" |
var pattern = /<some>([^<]*)<\/some>/gm
|
RUVATA, вот здесь похожая тема.
|
Если я правильно понял вам надо вытянуть текст из тегов (ваша эта задачка), я обычно это решаю методом объекта string - строка.match(Регулярка) :) я бы так это решил
var text = "<some>sdgsdgsd</some>\n<some>12312412</some>" var pattern = /<some>(.*)<\/some>/img; if(pattern.test(text)==true) { text2 = text.match(pattern); i = text2.length; for(k=0;k<i;k++){ text2[k]=text2[k].replace(/((<\/some>)|(<some>))/img,'') alert("Найдено " + text2[k]) }} |
У вас действительно так:
var text = "<some>sdgsdgsd</some>\n</some>12312412</some>" ?! <some>sdgsdgsd</some>- подходит. </some>12312412</some>- НЕ подходит.. |
weqq,
нет вот ваша строка var text = "<some>sdgsdgsd</some>\n</some>12312412</some>" а вот моя (я просто хотел показать как находит и изменил </some> на <some>) var text = "<some>sdgsdgsd</some>\n<some>12312412</some>" |
Часовой пояс GMT +3, время: 18:33. |