如何使用REGEXEXTRACT提取两个字符串之间的指定文本内容
正则提取人员姓名问题解决方案
原有公式=ARRAYFORMULA(REGEXEXTRACT(B3:B, "-(.*)\."))匹配错误的核心原因是.*为贪婪匹配规则,会从字符串第一个-的位置开始匹配,直到最后一个.结束,因此会把编号、标识字段里的-后续内容也纳入匹配结果。
修正后可用公式
=ARRAYFORMULA(REGEXEXTRACT(B3:B, ".*-\s*(.*?)\s*\."))
正则逻辑说明
.*-:贪婪匹配逻辑,会自动定位到整行文本的**最后一个-**位置,自动过滤掉前面所有包含-的编号、特殊标识内容\s*:匹配最后一个-之后的所有空格,跳过姓名前的空白字符(.*?):非贪婪匹配,捕获目标姓名内容,不会多占后续的字符\s*\.:作为匹配结束边界,匹配姓名后面的空格和行尾的.,确保不会把末尾的空白和点号纳入姓名结果
该公式可直接提取出符合要求的姓名结果,无需额外二次处理。
内容的提问来源于stack exchange,提问作者Kiel Pagtama
相关产品推荐
相关产品推荐

