Google Sheets REGEXREPLACE:如何排除以分号结尾的匹配项
Google Sheets REGEXREPLACE 实现排除分号结尾项拆分的方案
问题说明
需要使用Google Sheets的REGEXREPLACE函数将源文本按大写字母开头分段,但需排除以分号结尾的匹配项——这类项要与前面内容保持在同一行,不能单独拆分。当前正则中的[^;]未达到预期效果。
源文本
Basic medication kit of dentistry Drugs box containing Salbutamol; Glycerol-Trinitrate; Glucagon and Adrenaline
现有公式
=TRIM(REGEXREPLACE(G20,"([A-Z][\w\-]*[^;])",CHAR(10)&"· $1"))
当前结果
· Basic medication kit of dentistry · Drugs box containing · Salbutamol; · Glycerol-Trinitrate; · Glucagon and · Adrenaline
预期结果
· Basic medication kit of dentistry · Drugs box containing Salbutamol; Glycerol-Trinitrate; · Glucagon and · Adrenaline
解决方案
修正后的公式
=TRIM(REGEXREPLACE(G20, "([A-Z][^A-Z]*(?:;[^A-Z]*)*)", CHAR(10)&"· $1"))
正则解释
[A-Z]:匹配每个段落开头的大写字母,作为分段的起始标识。[^A-Z]*:匹配后续所有非大写字母的字符,直到遇到下一个大写字母。(?:;[^A-Z]*)*:非捕获组,允许重复匹配「分号+后续非大写字母字符」的结构,把所有连续的分号结尾项(如Salbutamol;、Glycerol-Trinitrate;)包含在同一个捕获组中,避免被单独拆分。
效果说明
该公式会将连续的分号结尾项与前面内容合并为同一行,仅在独立的大写字母开头短语前插入换行和列表符号,完全符合预期结果。
内容的提问来源于stack exchange,提问作者Riyaz Mansoor
相关产品推荐
相关产品推荐

