Есть строка:


Выделить код

Код:

<h3 class="Uo8X3b OFScic zsYMMe">Картинки</h3>
........... some text ...............
<h3 class="Uo8X3b Ohucic hsRREe">Описание</h3>
........... some text ...............

Названия классов после Uo8X3b могут быть любые, а Uo8X3b постоянный.
Мне надо регулярку, чтобы она захватила текст, начиная с <h3 class="Uo8X3b Ohucic hsRREe">Описание</h3> причем вместо Ohucic hsRREe могут быть рандомные наборы символов.

Выделить код

Код:

var re = new RegExp(/(\<h3 class=\WUo8X3b.*\/h3\>)/);
или просто 
    var re = /(\<h3 class=\WUo8X3b.*\/h3\>)/;

будет запомнен в $1

mokujin пишет

Выделить кодКод:var re = new RegExp(/(\<h3 class=\WUo8X3b.*\/h3\>)/);
или просто
    var re = /(\<h3 class=\WUo8X3b.*\/h3\>)/;будет запомнен в $1

Но мне надо чтобы <h3 class="Uo8X3b OFScic zsYMMe">Картинки</h3> не захватило, а <h3 class="Uo8X3b Ohucic hsRREe">Описание</h3> - захватило.


Я пытался сделать так:

Выделить код

Код:

var re = /(<h3 class=\"Uo8X3b.*?>Описание<\/h3>)/

Но оно захватывает вот это все целиком

Выделить код

Код:

<h3 class="Uo8X3b OFScic zsYMMe">Картинки</h3>
........... some text ...............
<h3 class="Uo8X3b Ohucic hsRREe">Описание</h3>

С вашим кодом то же самое.

это зависит как ты его собираешься использовать. мож там скобки не нужны. хз. как его спользовать буш.

Выделить код

Код:

var re = new RegExp(/(\<h3 class=\WUo8X3b.*Описание.*?\/h3\>)/i);

вот страничка с вычислителем и справкой, поиграйся там Регулярные выражения мож что придумаешь.

mokujin пишет

это зависит как ты его собираешься использовать. мож там скобки не нужны. хз. как его спользовать буш.

Выделить код

Код:

var re = new RegExp(/(\<h3 class=\WUo8X3b.*Описание.*?\/h3\>)/i);

Да дело не  в скобках. Дело в том, что вот эта часть регулярки

Выделить код

Код:

<h3 class=\WUo8X3b.*

Она подходит и под  первую строчку, где написано Картинки. И захватит текст, начиная с этой первой строки. Что мне не годится.
А как по другому сделать, я не знаю.

Если Картинки не один раз повторяются, то может что-то вроде такого:

Выделить код

Код:

<h3 class="Uo8X3b \S{6} \S{6}">Описание<\/h3>[\sА-Яа-яёЁ.,:;-]+(?!<h3 class="Uo8X3b \S{6} \S{6}">Картинки<\/h3>)

ну, яхз. я проверяю на страничке что предложил выше, и все выбирается как надо.
Ну добавь еще один нежадный ? к первой *

Выделить код

Код:

new RegExp(/\<h3 class=\WUo8X3b.*?Описание.*?\/h3\>/i);

16-06-2021 01:21:21
.... ааааа, оно у тебя в одной строке всё идет, чтоле?

16-06-2021 01:33:10
Это чтоле  xhr = new XMLHttpRequest()  и ответ разбираешь?
Если так, то

Выделить код

Код:

var re = new RegExp(/.*(<h3 class=\WUo8X3b.*Описание.+?\/h3>).*/i);

ME133XX_t.png

negodnik пишет

Если Картинки не один раз повторяются, то может что-то вроде такого:

Выделить код

Код:

<h3 class="Uo8X3b \S{6} \S{6}">Описание<\/h3>[\sА-Яа-яёЁ.,:;-]+(?!<h3 class="Uo8X3b \S{6} \S{6}">Картинки<\/h3>)

В том то и дело, что может быть один раз, может несколько, а может и не разу.


mokujin пишет

.... ааааа, оно у тебя в одной строке всё идет, чтоле?

Это чтоле  xhr = new XMLHttpRequest()  и ответ разбираешь?

ДА!! :lol:
Именно XMLHttpRequest я и разбираю.

Если так, то

Выделить код

Код:

var re = new RegExp(/.*(<h3 class=\WUo8X3b.*Описание.+?\/h3>).*/i);

Спасибо! :D
Сделал, получилось. Тему можно закрывать.