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

如何用正则表达式提取文本中code与accountId的对应值?

正则提取code和accountId值的解决方案

原正则的问题分析

你的正则存在几个关键问题:

  • 语法错误:包含错误的转义(如'\(')和多余括号,导致正则无法正常解析
  • 匹配范围过窄:code的值包含连字符-,但原正则仅匹配小写字母和数字;accountId是多位数字,原正则([0-9])仅能匹配单个数字
  • 未处理字段间内容:直接将code:...与accountId:...硬连接,无法匹配两者之间的任意文本

正确的正则方案

方案1:一次性捕获两个目标值

利用非贪婪匹配同时提取两个字段,正则表达式如下:

code:\s*'([^']+)'.*?accountId:\s*'([^']+)'

各部分说明:

  • code:\s*':匹配code:,允许后跟任意数量空白字符(空格、制表符等),再匹配单引号
  • ([^']+):捕获单引号内所有非单引号字符,能适配包含连字符、字母、数字的code值
  • .*?:非贪婪模式匹配中间任意文本,避免跳过目标accountId字段
  • accountId:\s*'([^']+)':同理捕获accountId对应的数字值

方案2:分别提取单个字段

若无需同时捕获,可使用两个独立正则分别提取:

  • 提取code值:
code:\s*'([^']+)'
  • 提取accountId值:
accountId:\s*'([^']+)'

示例用法(Python)

import re

text = "code: 'dev-foo-1', text: foo, bla:, blabla, ..., tokenId: '1234566343434', accountId: '123456789',..."

# 一次性提取
match = re.search(r"code:\s*'([^']+)'.*?accountId:\s*'([^']+)'", text)
if match:
    code = match.group(1)
    account_id = match.group(2)
    print(f"code: {code}, accountId: {account_id}")

# 分别提取
code_match = re.search(r"code:\s*'([^']+)'", text)
account_match = re.search(r"accountId:\s*'([^']+)'", text)
if code_match:
    print(f"code: {code_match.group(1)}")
if account_match:
    print(f"accountId: {account_match.group(1)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:53:23