如何使用正则表达式拆分D&D魔法物品属性字符串并提取对应字段?
D&D 魔法物品属性提取正则方案
适配正则表达式
/^_(?<type>[^,]+),\s(?<rarity>[^(_]+)(?:\s\((?<attune>requires attunement)(?: by a (?<class>[^)]+))?\))?_$/
Obsidian Templater 调用示例
// 假设你已从文档中提取到目标行存储为 itemLine 变量 const itemRegex = /^_(?<type>[^,]+),\s(?<rarity>[^(_]+)(?:\s\((?<attune>requires attunement)(?: by a (?<class>[^)]+))?\))?_$/; const matchResult = itemLine.match(itemRegex); // 匹配失败可自行补充 fallback 逻辑 const itemInfo = { type: matchResult.groups.type.trim(), rarity: matchResult.groups.rarity.trim(), attune: !!matchResult.groups.attune, class: matchResult.groups.class?.trim() ?? null }
匹配逻辑说明
- 完整覆盖三类物品字符串的匹配需求,无冗余逻辑,执行效率高
- 自动适配有无 attunement 要求、有无 attunement 职业限制的场景
- 捕获组命名和需求字段完全对应,无需额外转换即可直接使用
内容的提问来源于stack exchange,提问作者Brandon Hunt
相关产品推荐
相关产品推荐

