Kir*_*n14 6 regex unicode formulas google-sheets re2
我正在尝试为Google表格编写一个公式,它会将带有变音符号的Unicode字符转换为纯ASCII等效字符.
我看到Google在其"REGEXREPLACE"功能中使用了RE2.我发现RE2提供了Unicode字符类.
我试着写一个公式(类似于这个):
REGEXREPLACE("público","(\pL)\pM*","$1")
Run Code Online (Sandbox Code Playgroud)
但是Sheets会产生以下错误:
函数REGEXREPLACE参数2值"\ pL"不是有效的正则表达式.
我想我可以写一个由一组很长的嵌套SUBSTITUTE函数组成的公式(就像这个一样),但这看起来非常糟糕.
是否可以提供更好的方法来建议使用Google表格公式中的带有变音/重音标记的Unicode字母标准化?
[[:^alpha:]](否定的ASCII字符类)适用于REGEXEXTRACT公式。
但是=REGEXREPLACE("público","([[:alpha:]])[[:^alpha:]]","$1")结果是“ pblic”。因此,我想公式不知道确切的ASCII字符必须替换“ú”。
解决方法
让我们用这个词吧públic?;我们需要替换其中的两个符号。将此单词放在单元格A1中,并将此公式放在单元格B1中:
=JOIN("",ArrayFormula(IFERROR(VLOOKUP(SPLIT(REGEXREPLACE(A1,"(.)","$1-"),"-"),D:E,2,0),SPLIT(REGEXREPLACE(A1,"(.)","$1-"),"-"))))
Run Code Online (Sandbox Code Playgroud)
然后在D:E范围内创建替换目录:
D E
1 ú u
2 ? e
3 ... ...
Run Code Online (Sandbox Code Playgroud)
这个公式仍然很丑陋,但是更有用,因为您可以通过向表中添加更多字符来控制目录。
或使用Java脚本
还找到了一个很好的解决方案,该方法适用于Google表格。