python - 正则表达式匹配没有特定后缀的数字
问题描述
我有以下三个字符串:
inputs = [
"Season 12",
"Season 1a",
"Season 1-2"
]
我试图只匹配第一个。这是我当前的正则表达式:
outputs = []
for input in inputs:
output = re.search(r'(Staffel|Season|Saison|S\.?)?\s?(\d{0,})(?!(-|[a-z][A-Z]))', input, re.IGNORECASE).group(2)
outputs.append(output)
assert(outputs == ['12','',''])
# AssertionError, values were ['12', '1', '']
目前这适用于Season 12
, Season 1-2
,但不是Season 1a
(它不应该返回任何东西)。
解决方案
import re
inputs = [
"Season 12",
"Season 1a",
"Season 1-2",
"Seinfeld, Season 1 (UHD)"
]
re_num = re.compile(
r'(Staffel|Season|Saison|S\.?)\s?((\d+)$|(\d+)\s)',
flags=re.IGNORECASE
)
for s in inputs:
m = re_num.search(s)
if m:
print(s, '-->', m.group(2))
结果:
Season 12 --> 12
Seinfeld, Season 1 (UHD) --> 1
推荐阅读
- asp.net-core - 验证 Google JWT
- javascript - 在 jQuery datepicker 中禁用特定日期并启用一周中的特定日期
- ssis - 使用服务帐户的 SSIS 连接管理器
- node.js - Nightmare 无法启动 - 我的编码中出现语法错误(输入意外结束)
- eclipse - 使用 Eclipse CDT 在无限循环期间获取堆栈跟踪
- python - 查找多部分图像的内容长度
- docusignapi - 从模板创建信封时,是否可以将签名者类型从签名者更改为亲自签名者?
- json - 使用 sed 过滤掉 JSON GitHub API 中的缩进行
- javascript - 在图像文件预览上设置宽度后,imgareaselect 文件预览无法正常工作
- javascript - 插件仅在登录时工作(TypeError 不能使用 'in' 运算符搜索 'length' in)