Кое-что о регулярном выражении

#regex

#регулярное выражение

Вопрос:

Если я хочу получить текущую цену 416.00 следующего содержимого, какое регулярное выражение я могу использовать для его получения? На веб-странице есть несколько мест с похожим контентом, за исключением того, что в том, которое я хочу, есть слово Discount через несколько строк после текущей цены. 416,520 и 20% являются переменными. Спасибо.

 <tr> 
    <td class="txt_11px_b_EB6495" width="50" nowrap>Current Price?</td>
    <td class="txt_11px_b_EB6495">HK$ 416.00</td>
</tr>
<tr> 
    <td class="txt_11px_n_999999">Original price?</td>
    <td class="txt_11px_n_999999">HK$ 520.00</td>
</tr>
<tr> 
    <td class="txt_9px_n_999999">amp;nbsp;</td>
    <td class="txt_9px_n_999999">Discount 20%</td>
</tr>
  

Ответ №1:

Вы можете использовать

 " (d .d*)</td>"
  

Это будет соответствовать 520.00, 2.00, 123.1 и 123.

Комментарии:

1. Я думаю, что эта исправленная версия подойдет просто отлично. (d .d*)

2. На самом деле на веб-странице есть еще другая информация о текущих ценах, которую я хочу зафиксировать, это та, в которой после 11-й строки html-кода указано «Скидка». Следовательно, если просто использовать (d .d $), будут получены другие текущие цены

Ответ №2:

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

Вы бы использовали что-то вроде…

 d (?:.d{2}|%) 
  

Я только что протестировал его, и оно совпало…

  • 416.00
  • 520.00
  • 20%

Я предположил (это было неясно для меня), что вы хотите цены и процентную скидку. Я также сопоставил % , чтобы вы могли определить, каковы проценты совпадений.