Python正则如何从players: x-y格式文本中提取横杠前后的两个数字
正则匹配实现方案
你可以使用带两个捕获组的正则表达式来实现需求,正则逻辑锚定players关键词的同时,直接拆分提取-两侧的数字:
正则表达式
r'players:\s*(\d+)\s*-\s*(\d+)'
各部分含义说明:
players:固定匹配目标字段前缀,确保匹配的是你需要的players相关数据,不会误匹配其他字段\s*匹配0个或多个空白字符,兼容冒号后可能存在的空格、制表符等格式差异(\d+)第一个捕获组,匹配1位及以上的数字,对应最小玩家数(示例中的2)\s*-\s*匹配分隔符-,同时兼容横杠前后可能存在的空白(\d+)第二个捕获组,匹配1位及以上的数字,对应最大玩家数(示例中的8)
Python 调用示例
import re # 测试输入字符串 input_str = "players: 2-8" match_result = re.search(r'players:\s*(\d+)\s*-\s*(\d+)', input_str) if match_result: # 提取结果,默认是字符串类型,可按需转整数 min_count, max_count = map(int, match_result.groups()) print(min_count, max_count) # 输出:2 8
方案优势
- 不依赖字符串末尾的任何特殊字符,无论后续有没有
.或者其他内容都能正常匹配 - 兼容格式弹性高,横杠前后、冒号后有额外空格也不会匹配失败
- 直接拆分得到两个目标数字,无需二次处理结果
内容的提问来源于stack exchange,提问作者abbyabby
相关产品推荐
相关产品推荐

