"""知识点编码解析:多值分隔、族前缀匹配等。""" from __future__ import annotations import re _KNOWLEDGE_CODE_SPLIT = re.compile(r"[,\n;\uFF1B\uFF0C|/]+") def split_knowledge_codes(knowledge_code: str | None) -> list[str]: if not knowledge_code: return [] parts = _KNOWLEDGE_CODE_SPLIT.split(knowledge_code) return [p.strip() for p in parts if p and p.strip()] def knowledge_family_prefix(code: str) -> str | None: """J7-EQ-001 -> J7-EQ-,用于同小节多编码的宽松匹配。""" c = (code or "").strip() m = re.match(r"^(.+)-\d+$", c) if m: return f"{m.group(1)}-" return None