Regex всегда возвращается как NoneType или вообще не находит шаблон - PullRequest
0 голосов
/ 22 января 2020

У меня есть задача извлечь / найти шаблон в коде HTML и извлечь / распечатать его.

Я пытаюсь извлечь его с помощью регулярных выражений. К сожалению, я полный новичок в этом.

Вот код HTML: https://pastebin.com/cfvtLpZZ

И вот часть код, который мне нужно извлечь:

<span>Re: Máte zprávu od ubytování Lanterna Sunny Resort by Valamar<br>  <br>  Excuse me, but I have no pets.Please, I want ground floor, no stairs.Is it possible? Thank you for your answer.Hana Seidlová  </span>

Внутри него мне нужно найти соответствие между Re: и / span .

Это шаблон регулярного выражения, который я пытался использовать: "^Re:.*span$"

Код:

import re

HTMLcode = str(input("Enter the code you wanna scrape: "))

def scrape(HTMLcode):
  HTMLscrape = re.search("^Re:.*span$", HTMLcode)

  print(HTMLscrape.group(0))

scrape(HTMLcode)

Проблема, с которой я столкнулся, заключается в том, что HTMLscrape воспринимается интерпретатором как NoneType.

Я также пробовал этот код, но мне не повезло:

def scrape(HTMLcode):
  HTMLcompile = re.compile("^Re:.*span")

  HTMLsearch = HTMLcompile.search(HTMLcode)

  print(HTMLsearch.group(0))

Я также пытался использовать regex 101 веб-сайт , но там говорится, что шаблон не может быть найден.

В чем проблема? Любые объяснения или информация / отзывы приветствуются !!!

Ответы [ 2 ]

1 голос
/ 22 января 2020

Использование https://regex101.com - это хороший способ узнать, хорошо ли ваше регулярное выражение или нет. Например, у вас нет. ^Re: означает, что вы ищете что-то, что начинает строку с Re: и сразу после того, как вы ищете все (.*), и это заканчивается span.

Разве '1014 *

re.search("<span>Re:(.*?)</span>")

больше похоже на то, что вы хотите (начинается с <span>Re: и захватывает все до </span>)

0 голосов
/ 22 января 2020

Вы хотите, чтобы lookbehinds и lookaheads исключали <span> Re: и </span> соответственно. Вы можете использовать это регулярное выражение для этого:

(?<=<span>Re:).*(?=</span>)

См. Пример регулярного выражения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...