Пропуск результатов с регулярным выражением - PullRequest
1 голос
/ 21 апреля 2019

Я хочу отфильтровать результаты из API и хочу исключить некоторые формы результатов, отображаемые, например:

LEGACY-NA-XboxOfficialServer219
EU-PVP-XboxOfficial-TheIslanSmallTribes219
EU-PVP-XboxOfficial-TheIsland219

Я хочу последний результат. Так что я положил отрицательный взгляд на часть smalltribes, но теперь мне нужно что-то, чтобы определить, является ли это LEGACY или нет, и пропустить этот результат, если он

Что у меня есть:

re.search(r"[a-zA-Z](?<!SmallTribes)" + str(number) + r"$", x['Name']):

Я пытаюсь заставить его отображать только

EU-PVP-XboxOfficial-TheIsland219

1 Ответ

1 голос
/ 21 апреля 2019

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

^(?!LEGACY).*[a-zA-Z](?<!SmallTribes)219$

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

Подробности

  • ^ - начало строки
  • (?!LEGACY) - нет LEGACY подстрока в начале допускается
  • .* - любые 0+ символов, кроме символов разрыва строки, как можно больше
  • [a-zA-Z] - буква
  • (?<!SmallTribes) - нет SmallTribes подстроки прямо перед ...
  • 219$ - число 219 в концестрока.

В Python:

re.search(r"^(?!LEGACY).*[a-zA-Z](?<!SmallTribes){}$".format(number), x['Name']):

См. Python онлайн :

import re
strs = ['LEGACY-NA-XboxOfficialServer219',
'EU-PVP-XboxOfficial-TheIslanSmallTribes219',
'EU-PVP-XboxOfficial-TheIsland219']
number = 219
rx = re.compile(r"^(?!LEGACY).*[a-zA-Z](?<!SmallTribes){}$".format(number))
for s in strs:
    if re.search(rx, s):
        print(s)
# => EU-PVP-XboxOfficial-TheIsland219
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...