Попытка использовать re.findall для получения двух разных результатов - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь использовать re.findall для захвата двух разных результатов с веб-страницы.

Например, я хочу найти «save $ 10.00» и «$ 100.00», если сохранение существует и если оно существуетне существует, тогда просто найдите «100 долларов».

Я пробовал save ?\$\d{1,5}.

Заранее спасибо!

1 Ответ

0 голосов
/ 20 октября 2018

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

re.findall(r'(?:\bsave\s+)?\$\d+(?:\.\d+)?', s)

См. Демоверсию regex .

Подробности

  • (?:\bsave\s+)? - необязательное сопоставление группы без захвата
    • \bsave - целое слово save
    • \s+ - 1+ пробелы
  • \$ - $ символ
  • \d+ - 1+ цифр
  • (?:\.\d+)? - необязательная группа без захвата, соответствующая
    • \. - точка
    • \d+ - 1+ цифр

Помните, что вам нужно использовать группы без захвата создавать целые последовательности шаблона, поскольку re.findall возвращает (список) кортежей только в том случае, если в шаблоне определены группы захвата и что вызывает много путаницы .

...