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

如何扩展Java正则表达式提取字符串中的num与game_name

解决方案

要同时提取num和game_name,你需要调整正则表达式,让它能匹配两种不同的模式:直接在{}内的变量,以及嵌套在{}里[]中的变量。

适用的正则表达式

\{(?:([^}\[\]]+)|[^\]]+\[([^\]]+)\])\}

正则说明

  • \{:匹配开头的左大括号
  • (?:...):非捕获组,用来包含两种匹配分支:
    • ([^}\[\]]+):捕获{}内不包含[、]、}的内容,对应{num}里的num
    • |:逻辑或,切换到第二种匹配分支
    • [^\]]+\[([^\]]+)\]:先匹配到[之前的任意非]字符,再捕获[]之间的内容,对应[game_name]里的game_name
  • \}:匹配结尾的右大括号

示例用法(Python)

import re

text = "There are {num} scores {/game/[game_name]/game_in}"
pattern = r"\{(?:([^}\[\]]+)|[^\]]+\[([^\]]+)\])\}"
matches = re.findall(pattern, text)

# 收集所有非空的捕获结果
extracted = [val for pair in matches for val in pair if val]
print(extracted)  # 输出: ['num', 'game_name']

这个正则会找到所有符合两种模式的内容,最终你可以从捕获分组中提取出目标变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:42:24