首页 > 解决方案 > python:使用正则表达式获取情节

问题描述

此代码适用于此 fileName :

麻烦中的特克尔 2004

它应该返回“null”而不是匹配返回“e 200”,因为:

      e|x|episode|Ep|^        

    (\d{2,3})                 

我怎样才能防止这种情况?

def getEpisode(filename):
match = re.search(
    r'''(?ix)                 
    (?:                       
      e|x|episode|Ep|^        
      )                       
    \s*                       
    (\d{2,3})                 
    ''', filename)
if match:
    print (match)
    return match.group(1)


**EDIT:**
    test = (
    "0x01 GdG LO Star Lord  Part 1",             #1 
    "S01E01 GdG  Verso Nowhere",                 #2 
    "Wacky Races Episode 20 X264 Ac3",           #3
    "Terkel in Trouble 2004",                    #4 return None, it's ok
    "Yu Yu Hakusho  Ep 100  secret",             #5
    "Kakegurui S1 Ep11 La donna che scommette",  #6
    "Kakegurui S1 Ep12 La donna che gioca",      #7
    "ep 01 wolf's rain",                         #8
    "Toradora! 08"                               #9
)

标签: pythonregexre

解决方案


尝试使用单词边界\b

正则表达式已更新

\b(?:e(?:p(?:isode)?)?|0x|S\d\dE)?\s*?(\d{2,3})\b

结果

1 ->  0x01
2 ->  S01E01
3 ->  Episode 20
4 ->  
5 ->  Ep 100
6 ->  Ep11
7 ->  Ep12
8 ->  ep 01
9 ->  08

推荐阅读