从字符串中提取复杂的数字范围可以通过以下步骤实现:
\d+
来匹配一个或多个数字。下面是一个示例代码,演示如何从字符串中提取复杂的数字范围:
import re
def extract_number_range(string):
# 使用正则表达式匹配字符串中的数字
numbers = re.findall(r'\d+', string)
# 将匹配到的数字转换为整数并排序
numbers = sorted(map(int, numbers))
ranges = []
start = end = numbers[0]
# 遍历排序后的数字列表,找到连续的数字序列
for i in range(1, len(numbers)):
if numbers[i] - numbers[i-1] == 1:
end = numbers[i]
else:
# 构建数字范围表示
if start == end:
ranges.append(str(start))
else:
ranges.append(f"{start}-{end}")
start = end = numbers[i]
# 处理最后一个数字范围
if start == end:
ranges.append(str(start))
else:
ranges.append(f"{start}-{end}")
return ranges
# 示例用法
string = "abc123def456ghi789jkl"
ranges = extract_number_range(string)
print(ranges)
输出结果为:
['123-456', '789']
这个示例代码可以从字符串中提取出复杂的数字范围,并将范围表示以列表形式返回。对于输入字符串"abc123def456ghi789jkl",输出结果为['123-456', '789']。
领取专属 10元无门槛券
手把手带您无忧上云