Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   regex, выбрать текст из документа (https://javascript.ru/forum/misc/30293-regex-vybrat-tekst-iz-dokumenta.html)

trololo 30.07.2012 19:43

regex, выбрать текст из документа
 
имеется исходный документ содержащий вот такую структуру:
str<b><a href=''>str</a> </b><br/>
строка 1 которую нужно взять<br/> <br/>
str<b><a href=''>str</a> </b><br/>
строка 2 которую нужно взять<br/> <br/>
str<b><a href=''>str</a> </b><br/>
строка 3 которую нужно взять

<br/> <br/>
str<b><a href=''>str</a> </b><br/>
строка 4 которую нужно
<br/>взять<br/> <br/>

regex никогда не было моей сильной стороной, независимо от языка на котором писал. вот так пробую отсеять нужное
document.body.innerHTML.match(/<br>\s.*<br> <br>/gm)

на выходе имею
Array 
0 "<br> строка 1 которую нужно взять<br> <br>"
1 "<br> строка 2 которую нужно взять<br> <br>"
length 2

то есть выражение доходит до третей строки, в которой содержится ещё один перенос строки, также кроме переноса могут содержатся другие теги. что не хватает регулярному выражению?

oneguy 30.07.2012 19:58

Объясните, пожалуйста, подробнее, по какому критерию нужно выбрать текст.

trololo 30.07.2012 20:03

нужно выбрать тест/html пл следующим признакам:
str<b><a href=''>str</a> </b><br/>
строка 1 которую нужно взять<br/> <br/>
str<b><a href=''>str</a> </b><br/>
строка 2 которую нужно взять<br/> <br/>
str<b><a href=''>str</a> </b><br/>
строка 3 которую нужно взять

<br/> <br/>
str<b><a href=''>str</a> </b><br/>
строка 4 которую нужно
<br/>взять
<br/> <br/>

то есть всё, что попадается между </b><br/>\s(тут может быть текст, теги img|a|br и переводы строк)<br/>\s<br/>\n

vadim5june 30.07.2012 20:20

var 
v=document.body.innerHTML;
var m=v.split('</b><br>');
for(var i=1;i<m.length;i++){alert(m[i].split('<br> <br>')[0])};

Deff 30.07.2012 20:23

trololo,
Их можно взять суммой - или обязательно массив по строкам ?

trololo 30.07.2012 20:32

вообще задача стоит в том, чтобы этот текст, который выделен, с помощью js вставить в span или div с уникальным id, для дальнейшей удобности, на том же месте (на сейчас вопрос не в этом), то есть получить на выходе

str<b><a href=''>str</a> </b><br/>
<div id="a[1]">строка 1 которую нужно взять</div><br/> <br/>
str<b><a href=''>str</a> </b><br/>
<div id="a[2]">строка 2 которую нужно взять</div><br/> <br/>
str<b><a href=''>str</a> </b><br/>
<div id="a[3]">строка 3 которую нужно взять

</div>
<br/> <br/>
str<b><a href=''>str</a> </b><br/>
<div id="a[4]">строка 4 которую нужно
<br/>взять
</div>
<br/> <br/>

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

trololo 30.07.2012 20:35

Цитата:

Сообщение от vadim5june (Сообщение 193033)
var 
v=document.body.innerHTML;
var m=v.split('</b><br>');
for(var i=1;i<m.length;i++){alert(m[i].split('<br> <br>')[0])};

да, как-то о цикле я не думал, если с регуляркой не разберусь, то буду этот способ юзать..

Deff 30.07.2012 20:54

trololo,
Мало признаков

Выведите реальный кусок контента вместе с родителем - обрамлением, (Либо ссылку на страницу,
Данный пример - чисто помоечный вариант- без признаков индивидуальности - мон напрягацо скок угодно потом выбросить всё к черту

trololo 30.07.2012 21:41

Deff,
на самом деле это и есть фактически весь документ. родителем у всего этого этого выступает <td>, сам он содержит лишь то что я указал, за исключением того, что содержит немного другой текст и анкоры ссылок. ну что же, так и быть, всем спасибо за внимание буду использовать вариант предложенный товарисчем vadim5june.

Deff 30.07.2012 21:51

trololo,
td - это уже существенная вещь
второе
Это произвольный текст(Про выделенное цветом )?
str<b><a href=''>str</a> </b><br/>

Вам решения - еще и пытай Вас под ножом! Оно это нужно , никто не сидит с вами из помогающих за перегородкой и в курилке не обсуждали - термины и понятия разные, для мну пузырьковая камера - обиходное слово - вряд ли знакомое Вам...


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