Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№115-06-2021 19:09:31

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 254
UA: Firefox 85.0

Как сделать регулярку?

Есть строка:


Выделить код

Код:

<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 могут быть рандомные наборы символов.

Отсутствует

 

№215-06-2021 21:03:15

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 478
UA: Firefox 68.0

Re: Как сделать регулярку?

Выделить код

Код:

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

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


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№315-06-2021 21:40:58

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 254
UA: Firefox 85.0

Re: Как сделать регулярку?

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>

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

Отсутствует

 

№415-06-2021 22:37:19

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 478
UA: Firefox 68.0

Re: Как сделать регулярку?

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

Выделить код

Код:

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

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

Отредактировано mokujin (15-06-2021 22:46:57)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№516-06-2021 00:30:00

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 254
UA: Firefox 85.0

Re: Как сделать регулярку?

mokujin пишет

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

Выделить код

Код:

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

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

Выделить код

Код:

<h3 class=\WUo8X3b.*

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

Отсутствует

 

№616-06-2021 00:53:14

negodnik
 
 
Группа: Members
Зарегистрирован: 14-03-2013
Сообщений: 590
UA: Seamonkey 2.49
Веб-сайт

Re: Как сделать регулярку?

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

Выделить код

Код:

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

Отредактировано negodnik (16-06-2021 01:02:44)

Отсутствует

 

№716-06-2021 01:11:10

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 478
UA: Firefox 68.0

Re: Как сделать регулярку?

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

Выделить код

Код:

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

Отредактировано mokujin (16-06-2021 01:33:10)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№817-06-2021 17:56:51

toxa
Участник
 
Группа: Members
Зарегистрирован: 11-04-2012
Сообщений: 254
UA: Firefox 85.0

Re: Как сделать регулярку?

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
Сделал, получилось. Тему можно закрывать.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]