#c# #javascript #asp.net #python #regex
#c# #javascript #asp.net #python #регулярное выражение
Вопрос:
У меня есть простой HTML-код:
<span class="someclass" title="4.5 stars"></span>
или это может быть:
<span class="someclass" title="5 stars"></span>
Я использовал ((d .d )|(d )) star
, но он извлек мне 3 группы, мне нужна одна с числовым значением.
Как я могу извлечь 4.5 и 5 в обеих строках, используя регулярное выражение в одной группе?
Спасибо!
Комментарии:
1. Python, c #, asp.net а js? Что вы используете?
2. Как и большинство людей, я бы посоветовал вам использовать Html Agility Pack для .net htmlagilitypack.codeplex.com
Ответ №1:
Попробуйте удалить внутренние круглые скобки:
(d .d |d ) star
Кроме того, вы можете рассмотреть возможность использования синтаксического анализатора HTML для первого извлечения атрибутов, а не применения регулярного выражения непосредственно к необработанному HTML.
Ответ №2:
Вы можете сделать так, чтобы группы не захватывались, добавив ?: после открывающей скобки следующим образом
((?:d .d )|(?:d )) star
но ваши внутренние скобки в вашем случае не нужны.
Вы можете переписать свое выражение в
(d (?:.d )?) star
Ответ №3:
В python это можно было бы сделать таким образом:
import re
txt = '<span class="someclass" title="4.5 stars"></span>, <span class="someclass" title="5 stars"></span>'
re.findall(r'd [.]d |d ', txt)
['4.5', '5']