利用数学公式,讲清正则表达式最难理解的a*

本文详细解析了正则表达式中a*的作用及应用,包括如何匹配0到多个字符,以及在SQL查询中如何利用正则表达式进行模式匹配。
部署运行你感兴趣的模型镜像

正则表达式a*作用,可以匹配0到多个a,甚至空。可以当作一个占位符使用。

SELECT*
FROM student.re
WHERE restr REGEXP 'a*'

a*=空+n X a n为任意字符
占位符仅仅是起占位作用,要向里面传递参数
a也可以理解为 a=参数(空)+n X a n为任意字符
如果不向里面传递参数,占位符仅表示自身含义,不表示其他的意义。比如本例,仅表示n X a的含义。
在这里插入图片描述

SELECT*
FROM student.re
WHERE restr REGEXP 'ab*'

只对前面一个字符起作用
也就是说ab*=a+n X b n为任意个字符
表示含义:除n个b外还要有一个a
如果还觉得抽象还可以这样理解 ab
=a + (n X b)
在这里插入图片描述

SELECT*
FROM student.re
WHERE restr REGEXP 'abb*'

abb*=ab+(n X b) n为任意字符
表示含义除n个b外还要有一个ab
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

dbt(data build tool)是一个专为数据分析师设计的数据转换工具,它允许用户通过编写SQL查询来定义数据转换逻辑,并在数据仓库中执行这些转换。dbt的核心概念包括模型(Models)、测试(Tests)、文档(Documentation)、源数据(Sources)、种子数据(Seeds)以及快照(Snapshots)等。 ### 模型(Models) 模型是dbt中最基本的构建块,它们代表了你想要在数据仓库中创建的表或视图。每个模型都是一个`.sql`文件,其中包含了一个SELECT语句,该语句定义了如何从其他模型或原始数据源生成新的数据集。模型可以被组织成不同的目录结构,以反映业务逻辑的不同部分,并且可以通过配置文件进行参数化设置。 ### 测试(Tests) dbt允许用户对模型中的字段添加数据质量测试,确保数据符合预期的标准。例如,可以验证某个字段是否唯一、非空,或者检查数值范围等。如果测试失败,则表明数据可能存在异常,需要进一步调查。 ### 文档(Documentation) dbt支持自动生成项目文档,这有助于团队成员理解数据模型的意义及其背后的业务逻辑。文档可以通过Docusaurus这样的静态站点生成器来呈现,提供了一个易于导航和搜索的知识库[^2]。 ### 源数据(Sources) 源数据定义了指向外部数据源的指针,比如原始数据库中的表。使用源数据可以帮助明确区分哪些数据是外部的,哪些是由dbt生成的,同时也方便了数据 lineage 的追踪。 ### 种子数据(Seeds) 种子数据是指直接嵌入到dbt项目中的CSV文件,通常用于加载静态数据集,如国家列表、产品分类等。这些数据可以直接在模型中引用并与其他数据结合使用。 ### 快照(Snapshots) 快照功能用于跟踪现有表的变化历史。当基础数据发生变化时,快照可以帮助记录这些变化,从而保持数据的历史状态,这对于审计和分析趋势非常有用。 除了上述核心概念外,dbt还具有以下特性: - **Jinja模板引擎**:dbt利用Jinja宏来增强SQL的功能,使得代码更加灵活和可重用。 - **版本控制集成**:dbt项目可以轻松地与Git等版本控制系统集成,便于协作开发和变更管理。 - **多环境支持**:dbt能够支持多种数据仓库平台,如BigQuery, Snowflake, Redshift等,这意味着可以在不同的环境中一致地应用数据转换逻辑。 - **依赖管理**:dbt自动处理模型之间的依赖关系,确保按照正确的顺序执行转换。 - **部署简单**:dbt可以直接运行在命令行界面,也可以通过CI/CD流程自动化部署。 综上所述,dbt以其简洁的设计理念和强大的功能,简化了数据分析师的工作流程,提高了数据处理的效率和准确性。 ```python # 示例:一个简单的dbt模型可能看起来像这样 SELECT id, name, email FROM {{ source('raw_data', 'users') }} WHERE active = TRUE ``` ```python # 示例:为字段添加唯一性测试 version: 2 models: - name: stg_customers columns: - name: customer_id tests: - unique ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值