regex 删除大写字母前的小写字母

oknrviil  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(168)

我试图替换BigQuery上大写字母之前的所有小写字母。
例如:

string = aDepartment of test, kHospital of test

更换后

Department of test, Hospital of test

我做了一个正则表达式[a-z](?=[A-Z])。这个正则表达式在regex101上运行良好。但是当我在BigQuery上使用这个正则表达式时,它显示Cannot parse regular expression: invalid perl operator: (?=错误。
我不明白这个错误是怎么回事。有人能检查这个正则表达式,使它可以在BigQuery上工作吗?

4si2a6ki

4si2a6ki1#

查找范围为not supported in RE2 library
您可以使用

regexp_replace(col, r'[a-z]([A-Z])', r'\1')

参见regex demo

  • 详细信息 *:
  • [a-z]-ASCII小写字母
  • ([A-Z])-第1组(\1):ASCII大写字母。
vsikbqxv

vsikbqxv2#

遗憾的是,Google BigQuery使用的是RE2表达式库,该库目前不支持正向或反向lookaheads
我想你可以让regex101使用一个不同的引擎,这样你就可以调试一些与BigQuery兼容的东西,在那里你会看到?=是错误的。如果你不需要前瞻,你可以简单地删除这两个字符,只要记住你现在将捕获大写字母(所以你需要在你的替换中添加它)。

相关问题