Снятие квадратных скобок с вывода и остановка регулярных выражений после первого совпадения - PullRequest
1 голос
/ 05 апреля 2019

Питон нуб здесь.Я пытаюсь исправить две проблемы с моим текущим кодом.

  1. Я пытаюсь удалить квадратные скобки из списка вывода
  2. Я не могу понять, как остановитьрегулярное выражение после первого совпадения

Для первой проблемы я пробовал несколько различных решений, но безуспешно.

str()
"".join()
.replace"[]",''
page_content = "carrots apples001 carrots apples002 apples003"

define_words = 'apples'

parsed_content = str((re.findall(r"([^.]*?%s[^.]*\.)" % define_words, page_content)))

В настоящее время я получаю следующеевывод

[apples001][][][][][apples002 apples003]

Когда я должен получить

apples001

Любая помощь будет очень признательна и извините за грязный код!

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Вместо использования re.findall , вы можете использовать re.search для поиска первого местоположения, в котором шаблон дает совпадение.

Чтобы соответствоватьслово «яблоки» и следующие цифры, которые вы можете использовать:

\bapples\d+\b
  • \b Граница слова, чтобы не быть частью большого слова
  • apples\d+ Совпадение яблок с последующим 1+ цифры
  • \b Граница слова

Regex demo | Демонстрация Python

Ваш код может выглядеть следующим образом:

import re
page_content = "carrots apples001 carrots apples002 apples003"
define_words = 'apples'
parsed_content = (re.search(r"\b%s\d+\b" % define_words, page_content).group())
print(parsed_content)  # apples001

Если define_words может начинаться с символа, отличного от слова, вы можете использовать (?<!\S)%s\d+ вместо того, чтобы утверждать, чтослева не символ без пробела.

parsed_content = (re.search(r"(?<!\S)%s\d+" % define_words, page_content).group())
0 голосов
/ 05 апреля 2019

Вы можете попробовать следующее:

Test_String = "carrots apples001 carrots apples002 apples003"
Regex_Pattern = r'(apples\S\S\S).*'
match = re.findall(Regex_Pattern, Test_String)
print(''.join(match))

Rextester

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