Google Sheets中基于REGEXEXTRACT添加停用词排除的公式优化需求
Google Sheets 公式优化:提取棋手姓名并过滤停用词
当前使用公式:
=ARRAY_CONSTRAIN(ARRAYFORMULA(REGEXEXTRACT(A2:A6;"[0-9]+(.+) –"));COUNTA(A2:A6);1)
从A列提取长破折号–前的棋手姓名,但当姓名前存在B列黑名单停用词时无法正确输出。以下是优化后的方案:
优化公式
=ARRAY_CONSTRAIN(ARRAYFORMULA(TRIM(REGEXEXTRACT(A2:A6; "[0-9]+\s*(?:" & TEXTJOIN("|"; TRUE; B2:B) & ")?\s*(.+) –"))); COUNTA(A2:A6); 1)
公式说明
- 停用词整合:通过
TEXTJOIN("|"; TRUE; B2:B)将B列的停用词拼接为正则表达式的「或」匹配模式,实现批量匹配所有需过滤的词汇 - 正则逻辑调整:在原数字匹配后加入
\s*(?:停用词)?\s*,实现跳过数字后可选的停用词及前后空白 - 结果清理:用
TRIM去除提取结果首尾的多余空格,保证姓名格式整洁 - 批量处理保留:保留原有的
ARRAYFORMULA和ARRAY_CONSTRAIN,实现批量提取并仅返回非空行的结果
内容的提问来源于stack exchange,提问作者TheGunner4
相关产品推荐
相关产品推荐

