regex - 识别字符串由重复字符组成的记录
问题描述
我有兴趣识别字符串由 1 个重复字符组成的记录,例如 'AAA'、'ZZZZZ'、'EE' 但不是 'A'、'HELLO'、'APPLE'、'AABB'、'MM ALBERT '
以下正则表达式在我测试它时有效^(.)\1{1,}$
https://regex101.com/r/dT6dK8/46
但是当我在雪花中使用它时它不起作用。任何意见,将不胜感激。
我在雪花中测试的内容
SELECT 'AA' regexp '^(.)\1{1,}$' -- AS 'EXPECT TRUE'
,'AAA' regexp '^(.)\1{1,}$' -- AS 'EXPECT TRUE'
,'A' regexp '^(.)\1{1,}$' -- AS 'EXPECT FALSE'
,'AAAAA' regexp '^(.)\1{1,}$' -- AS 'EXPECT TRUE'
,'BBBB' regexp '^(.)\1{1,}$' -- AS 'EXPECT TRUE'
,'AABB' regexp '^(.)\1{1,}$' -- AS 'EXPECT FALSE'
,'HELLO' regexp '^(.)\1{1,}$' -- AS 'EXPECT FALSE'
,'AAAAA' regexp '^(.)\1{1,}$' -- AS 'EXPECT TRUE'
,'BB BB' regexp '^(.)\1{1,}$' -- AS 'EXPECT FALSE'
;
解决方案
不使用正则表达式:
SELECT col, REPLACE(col, LEFT(col,1), '') = '' AND LENGTH(col) > 1
FROM (SELECT 'AA' AS col UNION ALL SELECT 'HELLO') t;
如果使用空字符串的第一个字符替换返回空字符串,则表示所有字符串都相同。
推荐阅读
- java - 带有 Java 的 Google Colab(使用 JShell)
- java - 饼图到 JPanel netbeans
- javascript - 如何增加网页的亮度
- rust - 获取向量尾部的惯用方法是什么?
- javascript - 设置 Firebase Firestore 安全规则,以便只有用户可以 CRUD 自己的数据,而其他所有内容都被忽略
- html - 如何在移动设计中移除 Space CSS overflow-x
- python - 为温度转换设置 if 语句?
- tensorflow - 将 tensorflow 模型从本地机器转换到 AWS SageMaker 时读取 S3 存储桶时出现问题
- groovy - Groovy 获取 xml 标签属性值
- javascript - 制作非常简单的应用程序,包括前端和后端技能(js、node.js、psql、react...)