Это зависит от границ, которые вы хотите добавить в выражение.Например, мы могли бы начать с:
\s*([a-z0-9-]+)(?:\s+)?([a-z0-9-]+)?\s*
Выражение объяснено на верхней правой панели этой демонстрации , если вы хотите изучить ее дальше или изменить, и в эту ссылку , вы можете посмотреть, как она будет шаг за шагом сопоставляться с некоторыми примерами входных данных, если хотите.
Редактировать:
Для получения этих оценок это выражениеможет просто хватить:
rating-inbtn[^>]+>\s*([^\s<]+)\s*<\/
Тест с re.findall
import re
regex = r"rating-inbtn[^>]+>\s*([^\s<]+)\s*<\/"
test_str = ("<span class=\"vote-actions\">\n"
" <a class=\"btn btn-default vote-action-good\">\n"
" <span class=\"icon thumb-up black black-hover\"> </span>\n"
" <span class=\"rating-inbtn\">215</span>\n"
" </a>\n"
" <a class=\"btn btn-default vote-action-bad\">\n"
" <span class=\"icon thumb-down grey black-hover\"> </span>\n"
" <span class=\"rating-inbtn\">82</span>\n"
"<span class=\"rating-inbtn\"> 74 </span>\n"
"<span class=\"rating-inbtn hide-if-zero-113\"> 99 </span>\n"
" </a>\n"
"</span>")
print(re.findall(regex, test_str))
Выход
['215', '82', '74', '99']
Тест с re.finditer
import re
regex = r"rating-inbtn[^>]+>\s*([^\s<]+)\s*<\/"
test_str = ("<span class=\"vote-actions\">\n"
" <a class=\"btn btn-default vote-action-good\">\n"
" <span class=\"icon thumb-up black black-hover\"> </span>\n"
" <span class=\"rating-inbtn\">215</span>\n"
" </a>\n"
" <a class=\"btn btn-default vote-action-bad\">\n"
" <span class=\"icon thumb-down grey black-hover\"> </span>\n"
" <span class=\"rating-inbtn\">82</span>\n"
"<span class=\"rating-inbtn\"> 74 </span>\n"
"<span class=\"rating-inbtn hide-if-zero-113\"> 99 </span>\n"
" </a>\n"
"</span>")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))