You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则表达式匹配单行内的多个数字?

问题:匹配文本中所有独立的1-2位数字

原代码仅能匹配每行开头的1-2位数字,无法捕获同一行内的后续数字,且未排除被字母包裹的长数字。需求是提取所有独立的1-2位数字(如同一行的1 2需全部匹配,G3434343中的数字需忽略)。

原代码问题分析

原正则^\d{1,2}配合re.MULTILINE模式,仅匹配每行开头的1-2位数字,因此同一行内非行首的数字(如第一行的2)无法被捕获,不符合需求。

正确解决方案

使用匹配独立1-2位数字的正则表达式,确保数字前后为非单词字符(空白、行首/行尾),避免匹配长数字的一部分或被字母包裹的数字:

代码示例

import re

lines = '''

1 2

3

4

G3434343 '''

# 匹配独立的1-2位数字,\b表示单词边界
matches = re.findall(r'\b\d{1,2}\b', lines)
print(matches)  # 输出: ['1', '2', '3', '4']

验证第二个示例输入

输入:

8 9
11

15

G54444

运行上述代码,输出为['8', '9', '11', '15'],完全符合期望。

正则说明

  • \b:单词边界,确保数字前后不是字母、数字或下划线(即数字是独立的,不是长数字或带前缀的数字的一部分)
  • \d{1,2}:匹配1到2位的数字
  • 无需re.MULTILINE模式,因为我们要捕获所有符合条件的数字,而非仅行首的数字

内容的提问来源于stack exchange,提问作者MichaelT444

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:05:25