如何在Google Sheet中用REGEXEXTRACT提取最后一个|后以SP结尾的字符串
正则修改方案
原正则错误原因
- 拼写错误:你要匹配以
SP结尾的内容,但原正则里写的是SR,匹配目标完全不符 - 贪婪匹配无边界限制:
[\|\s].+的写法没有禁止跨|匹配,默认的贪婪匹配规则会尽可能往前匹配到最早出现的|,导致把前面多个|分隔的内容都包含进来
正确正则规则
你需要先让正则贪婪匹配到最后一个|的位置,再向后捕获符合要求的内容,公式如下:
=REGEXEXTRACT(<输入字符串>, ".*\|([^|]*SP)\s*$")
如果需要自动去除提取结果前后的空白,可以嵌套TRIM函数:
=TRIM(REGEXEXTRACT(<输入字符串>, ".*\|([^|]*SP)\s*$"))
如果需要处理不存在匹配内容的报错,可额外嵌套IFERROR函数:
=IFERROR(TRIM(REGEXEXTRACT(<输入字符串>, ".*\|([^|]*SP)\s*$")), "无匹配内容")
规则解释
.*\|:贪婪匹配所有字符直到最后一个|的位置,确保后续匹配从最后一个分隔符之后开始([^|]*SP):捕获组,匹配所有不含|的字符,直到遇到结尾的SP,保证不会跨分隔符匹配前面的内容\s*$:匹配字符串末尾可能存在的空白字符,避免结尾空格影响SP的结尾判定
内容的提问来源于stack exchange,提问作者Amir Hossain
相关产品推荐
相关产品推荐

