REGEXREPLACE 忽略使用 PROPER 的正则表达式捕获组的文本转换

REGEXREPLACE 忽略使用 PROPER 的正则表达式捕获组的文本转换

我正在尝试更改 Google 表格中部分文本字符串(子字符串)的大小写。

我尝试将 PROPER 函数应用于 REGEXREPLACE 内的正则表达式捕获组,但失败了。

PROPER 函数 (UPPER 和 LOWER 也是如此) 被忽略了。

示例公式已被简化以说明该问题。

PROPER 失败

=REGEXREPLACE(
   "POPCORN",
   "^([[:upper:].*)",
   PROPER("$1"))

="POPCORN"

如果我改用 REGEXEXTRACT 函数来提取字符串,我可以将其包装在 PROPER 中,它就会按预期运行。

PROPER 成功

=PROPER(
   REGEXEXTRACT(
     "POPCORN",
     "^([[:upper:].*)")

="Popcorn"

能够将 REGEXREPLACE 与 PROPER 一起使用可以简化公式。

而不是使用:

PROPER 失败

=REGEXREPLACE(text,regex,
              PROPER("$1"))

我正在使用以下方法:

PROPER 成功

=SUBSTITUTE(text,
   REGEXEXTRACT(text,regex),
   PROPER(REGEXEXTRACT(text,regex))))

或者变体

=LET(str,REGEXEXTRACT(text,regex),  
   SUBSTITUTE(text,str,PROPER(str))) 

有没有办法调整无法在 REGEXREPLACE 函数中成功使用 PROPER 的公式中的语法?

答案1

我认为没有办法简化你的公式。

PROPER("$1")应用于字符串"$1"而不是匹配项,并且无法改变这种行为。

相关内容