Data Studio 不支持在正则表达式替换中使用 \U \1 转换为大写。
但是可以通过以下解决方法 需要有一个转义字符,这里是* 来标记大写字母。
假设url在字段URL_field中,第一步是获取url的最后一部分。字段dummy0 是
REGEXP_EXTRACT(dummmy, r"/([^/]*)/*$")
取第一个字母并将其向上转换。任何数量的空格或- 都会转换为双倍空格。
然后对于每个长于两个字母的“单词”被拆分为*w<ord,因此w 被标记为大写。为此创建了一个字段dummmy1:
REGEXP_REPLACE(
REGEXP_REPLACE(CONCAT(upper(left_text(dummy0,1)),
REGEXP_REPLACE(substr(dummy0,2,999),r"[\s-]+"," "),
" "), r"\s([a-z])(\w\w+)\s", r" *\1<\2 ")
, r"\s$", "")
在下一步中,我们可以对字母表中的每个字母执行replace(...,"*a<,"A");但是这会过于嵌套,Data Studio 不允许这样做。因此,需要另一种方法。四个内部regexp_replace 在每个标记的字符*w< 周围添加整个大写字母。此外,标记的字符直接位于其大写字母之前。
因此*w<ord 被转换为*ABC...UVwWXYZord。然后将其替换为***wWXYZord。这将转换为Word。
regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(regexp_replace(
dummy1
,r"\*(a{0,1})(b{0,1})(c{0,1})(d{0,1})(e{0,1})(f{0,1})(g{0,1})(h{0,1})([i-z]{0,1}\<)",r"*\1A\2B\3C\4D\5E\6F\7G\8H*\9")
,r"H\*(i{0,1})(j{0,1})(k{0,1})(l{0,1})(m{0,1})(n{0,1})(o{0,1})(p{0,1})([q-z]{0,1}\<)",r"\1I\2J\3K\4L\5M\6N\7O\8P*\9")
,r"P\*(q{0,1})(r{0,1})(s{0,1})(t{0,1})(u{0,1})(v{0,1})(w{0,1})(x{0,1})([y-z]{0,1}\<)",r"P\1Q\2R\3S\4T\5U\6V\7W\8X*\9")
,r"X\*(y{0,1})(z{0,1})\<",r"X\1Y\2Z")
,r"\*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*",r"***")
,r"\*\*\*.(.)A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*",r"\1")