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

正则表达式入门:如何提取n后为整数或问号的对应值

适配两种场景的正则实现

你原有的正则仅能匹配\w+覆盖的普通字符,无法识别问号场景,只需要调整捕获组规则、补充后续值判断逻辑即可满足需求。

修改后完整代码

import re

def get_n_value(line: str):
    # 锚定n键,捕获组同时支持匹配问号和整数
    res = re.search(r'n : (\?|\d+), t : \d+\.\d+', line)
    if not res:
        return None
    val = res.group(1)
    return None if val == '?' else int(val)

# 场景测试
print(get_n_value("n : ?, t : 0.4"))  # 输出 None
print(get_n_value("n : 3, t : 0.7"))  # 输出 3
print(get_n_value("n : 4, t : 0.4"))  # 输出 4

核心修改点说明

  • 正则捕获组从原来的(\w+)调整为(\?|\d+):通过|实现二选一匹配,由于?是正则特殊量词,必须加反斜杠转义为\?才能匹配字面量的问号,\d+负责匹配连续的整数字符
  • 将原正则开头模糊匹配的\w替换为固定字符n,避免误匹配其他同格式键值对,提升匹配准确率
  • 将原正则匹配小数部分的\d\.\d+调整为\d+\.\d+,兼容整数部分长度大于1的小数场景(如t : 10.25)
  • 捕获结果做简单分支判断:捕获到?时返回None,捕获到数字字符串时转为整型返回,完全匹配预期输出规则

注意:如果你的文本行里键值对的冒号前后空格数不固定,可以把冒号前后的空格替换为\s*,比如正则改成r'n\s*:\s*(\?|\d+),\s*t\s*:\s*\d+\.\d+',适配更多格式变体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:03:32