如何扩展字母数字列表中范围项的末尾数字生成完整列表?
适配你的字母数字范围扩展需求
下面是针对你提供的列表格式编写的解决方案,核心是调整正则表达式以匹配「固定前缀+数字范围」的结构:
import re values = ['1111X0-1111X3', 'A111X0-A111X3', '单个条目示例'] values_output = [] for item in values: # 匹配前缀相同的数字范围格式 match_result = re.match(r'^(.+?)(\d+)-\1(\d+)$', item) if match_result: # 提取前缀、起始数字、结束数字 prefix = match_result.group(1) start_num = int(match_result.group(2)) end_num = int(match_result.group(3)) # 生成所有范围内的条目 values_output += [f"{prefix}{num}" for num in range(start_num, end_num + 1)] else: # 无范围的条目直接加入结果 values_output.append(item) print(values_output)
正则表达式详解
^(.+?)(\d+)-\1(\d+)$ 各段作用:
^/$:锚定字符串首尾,确保整个条目都符合匹配规则(.+?):非贪婪捕获固定前缀,例如1111X或A111X,非贪婪模式避免把后续数字也纳入前缀(\d+):捕获范围的起始数字(如0)-:匹配范围分隔符\1:引用第一个捕获组的内容,强制要求前后前缀完全一致(\d+):捕获范围的结束数字(如3)
运行效果
针对你提供的示例输入,输出会是:
['1111X0', '1111X1', '1111X2', '1111X3', 'A111X0', 'A111X1', 'A111X2', 'A111X3', '单个条目示例']
内容的提问来源于stack exchange,提问作者ReynoldL
相关产品推荐
相关产品推荐

