Как сложить верно регулярку с переносом? (Решено!)

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Доброго времени суток. Помогите, пожалуйста, сложить регулярку, что бы заработало:
HTML:
                                                                    <div class="market-trend">
                                        <span class="timespan">12 hours</span>
                                        <span class="price">$15.41</span>
                                        <span class="volume">176 sold</span>
                                    </div>
Получил эти данные, хочу спарсить 15.41, если бы не лишние доп. значения, то работало и так:
Рег.Выражение:
(?<=<span\ class="price">\$).*?(?=</span>)
Но мне нужно, захватить как-то еще и верхнуюю строчку, что бы в начале дополнительно брало <span class="timespan">12 hours</span>
Вот как хотелось бы сделать:
Пример Регулярки:
(?<=<span\ class="timespan">12\ hours</span><span\ class="price">\$)*?(?=</span>)
Но так как <span class="timespan">12 hours</span> находится в верхней строке, я никак не могу верно сложить регулярку, что бы нормально искало. Какой знак мне поможет?

Заранее, очень благодарен за помощь!
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Собирай с помощью xpath каждый по отдельности, затем join'и строку.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Подскажи, пожалуйста, а как Xpath применять в случаях, когда данные в переменной? В простой обработке текста же нету XPath метода?
Собирай с помощью xpath каждый по отдельности, затем join'и строку.
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Тогда собирай регуляркой по отдельности, затем соединяй переменные.
 
  • Спасибо
Реакции: Gunjubasik

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Нашел временное решение, не удалось только отсеять нижние значения:
Рег.Выражение:
(?<=<span\ class="timespan">12\ hours</span>[\w\W]*?<span\ class="price">\$).*?(?=</span>)
55446
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Не понятно в чем проблема.

Перед искомым словом timespan
После искомого volume

Самое короткое совпадение и перенос строк.
Потом код чистишь заменой или регуляркой. Делов на 2 минуты.

__
Зачем искать идеальную регулярку, если можно сделать две. Которые выполнят, точно такую же функцию.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Проблема в том, что я уже теряюсь в кубиках - слишком много их, хочу учится оптимизировать в 1 все что можно, так как - даже когда есть комп не слабый - весь проект глючит, как анимация - 5 FPS при переходе с одной стороны проекта в другой.

Не понятно в чем проблема.

Перед искомым словом timespan
После искомого volume

Самое короткое совпадение и перенос строк.
Потом код чистишь заменой или регуляркой. Делов на 2 минуты.

__
Зачем искать идеальную регулярку, если можно сделать две. Которые выполнят, точно такую же функцию.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Проблема в том, что я уже теряюсь в кубиках - слишком много их, хочу учится оптимизировать в 1 все что можно, так как - даже когда есть комп не слабый - весь проект глючит, как анимация - 5 FPS при переходе с одной стороны проекта в другой.
Я тебя умоляю. У меня в парсере 30-50 регулярок не оптимизированных. И я на айхоре, на дешман тарифах за 500р гонял в 20 потков вобще без проблем. Эти регулярки создают проблемы когда их много и когда жесткий многопоток. А то что у тебя будет две или одна, по сути ничего не изменит. Тормозит у тебя скорей всего совсем по другим причинам, нужно делать репорты расширенные, записывать время тормозов и писать в поддержку.
 
  • Спасибо
Реакции: Platon

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113
Нужен нормальный пример со страницей и надо использовать xPath, так как с ним проще намного.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Каким образом вы бы посоветовали использовать XPath? Если снипетом - может, подскажите, пожалуйста, где такой взять? А если блоками - то где находится блок с XPath парсингом данных c переменной ?
Нужен нормальный пример со страницей и надо использовать xPath, так как с ним проще намного.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 371
Баллы
113
Каким образом вы бы посоветовали использовать XPath? Если снипетом - может, подскажите, пожалуйста, где такой взять? А если блоками - то где находится блок с XPath парсингом данных c переменной ?
55467
Есть возможность сохранять и в список.
 
  • Спасибо
Реакции: Gunjubasik

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Последнее редактирование:

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)