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

Python正则前瞻后顾匹配失效,如何提取方括号内数字?

问题解决:提取方括号内的数字

你之前用(?<=\[)\d+(?=])匹配失败,是因为这个正则要求数字必须直接跟在[后面,且数字后直接是],但目标字符串里方括号内的内容是WatchDog_191084,数字前面有其他字符,不符合匹配规则,所以返回None。

下面提供两种可行的解决方案:

方案一:分步提取

先提取方括号内的完整内容,再从中提取数字:

import re
str = '2024-09-23 18:05:08,147 INFO  [WatchDog_191084]  (alloc:0MB, cpu:0%) 10      422'
# 提取方括号内的全部内容
bracket_content = re.search(r'(?<=\[).+?(?=])', str).group()
# 从提取的内容中匹配数字
identifier = re.search(r'\d+', bracket_content).group()
print(identifier)  # 输出:191084

方案二:单个正则直接匹配

直接用正则捕获方括号内的数字部分,通过分组提取结果:

import re
str = '2024-09-23 18:05:08,147 INFO  [WatchDog_191084]  (alloc:0MB, cpu:0%) 10      422'
# 匹配方括号内的数字,用分组捕获
match_result = re.search(r'\[.*?(\d+).*?]', str)
if match_result:
    print(match_result.group(1))  # 输出:191084

如果你的日志格式固定(方括号内都是WatchDog_加数字),还可以用更精准的正则:

match_result = re.search(r'\[WatchDog_(\d+)]', str)

内容的提问来源于stack exchange,提问作者Eliseo Di Folco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:12:07