使用正则表达式跳过结果

时间:2019-04-20 21:47:14

标签: python regex

我想从API过滤出结果,并想排除某些结果显示的形式,例如:

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

我想要最后的结果。因此,我在小部落部分留下了负面的印象,但现在需要一些东西来确定它的遗产是否存在,并跳过它的结果

我到目前为止所拥有的:

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

我试图让它仅显示

EU-PVP-XboxOfficial-TheIsland219

1 个答案:

答案 0 :(得分:1)

您可以使用

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

请参见regex demo

详细信息

  • ^-字符串的开头
  • (?!LEGACY)-开头没有LEGACY子字符串
  • .*-除换行符以外的任意0+个字符,并且尽可能多
  • [a-zA-Z]-一封信
  • (?<!SmallTribes)-之前没有SmallTribes子字符串...
  • 219$-字符串末尾的219数字。

在Python中:

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

请参见Python demo online

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