python - 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
)
解决方案
尝试使用单词边界\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
推荐阅读
- reactjs - 从 Accordion.Collapse 组件中折叠 React-Bootstrap Accordion
- java - JAXB 解析属性位于单行的 xml 文件
- r - geom_sf 参数仅适用于 ggmap 的一个方面
- reactjs - 反应:设置审查
- scipy - python - 如何获得 shc.linkage 有序叶子?
- node.js - 在 AWS 生态系统中存储资产
- swiftui - SwiftUI 的 macOS 设置窗口未显示在 Catalyst 应用程序上
- java - Swap 方法无法交换两个相邻节点(单链表)
- bash - 一个班轮工作,但在 bash 脚本中不起作用,为什么?
- javascript - findTransformECC 标准的 opencv.js 问题