LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL匹配和处理字符串的强大工具:正则表达式

admin
2024年9月4日 10:22 本文热度 843
01

什么是正则表达式?有何作用?

正则表达式(Regular Expressions, 简称 regex 或 regexp)是一种用于匹配和处理字符串的强大工具。它就像是一把多功能的瑞士军刀,可以帮助你在处理文本时做很多事情:

1.检查用户输入是否符合特定格式:比如,你在网上注册账号时,网站会要求你输入电子邮件地址。正则表达式可以检查你输入的是不是一个看起来像真的电子邮件地址,比如检查是否包含@符号,后面有没有域名等。

2.在文本中查找符合特定模式的字符串:假如你有一大堆文本,想找出里面所有的电话号码或者邮箱地址,正则表达式就能帮你快速找到这些信息,就像用筛子筛东西一样,把符合规则的部分筛选出来。

3.替换文本中符合特定模式的字符串:比如,你写了一篇文章,想把所有的“你好”改成“大家好”,正则表达式就能帮你找到所有的“你好”,然后统一替换成“大家好”。

4.分割字符串:如果你有一个长字符串,里面包含了很多信息,比如一个字符串是“姓名:张三,年龄:25,职业:程序员”,你可以用正则表达式来把这个字符串分割成姓名、年龄和职业三部分,方便你处理。


02

正则表达式的基本构成 

1.字面字符:直接匹配文本中的字符。例如,abc 匹配 abc。

2.特殊字符:

    • .:匹配任何单个字符(除换行符外)。
    • ^:匹配字符串的开头。    
    • $:匹配字符串的结尾。
    • \:转义字符,用于匹配特殊字符。例如,\. 匹配实际的句点字符。

3.字符类

    • []:定义字符集合。例如,[abc] 匹配 a、b 或 c。
    • [^]:定义字符排除集合。例如,[^0-9] 匹配非数字字符。
    • -:用于定义字符范围。例如,[a-z] 匹配小写字母。

4.量词:

    • *:匹配前面的字符零次或多次。例如,a* 匹配零个或多个 a。

    • +:匹配前面的字符一次或多次。例如,a+ 匹配一个或多个 a。

    • ?:匹配前面的字符零次或一次。例如,a? 匹配零个或一个 a。

    • {n}:匹配前面的字符恰好 n 次。例如,a{3} 匹配三个 a。

    • {n,}:匹配前面的字符至少 n 次。例如,a{2,} 匹配两个或更多 a。

    • {n,m}:匹配前面的字符至少 n 次,但不超过 m 次。例如,a{2,4} 匹配两个到四个 a。

5.预定义字符集:

    • \d:匹配任何数字字符,相当于 [0-9]。

    • \D:匹配任何非数字字符,相当于 [^0-9]。

    • \w:匹配任何字母数字字符和下划线,相当于 [a-zA-Z0-9_]。

    • \W:匹配任何非字母数字字符和下划线,相当于 [^a-zA-Z0-9_]。    

    • \s:匹配任何空白字符(包括空格、制表符、换行符)。

    • \S:匹配任何非空白字符。

6.分组和捕获:

    • ():用于分组和捕获匹配的子字符串。例如,(abc)+ 匹配一个或多个 abc。
    • (?:):用于分组但不捕获。例如,(?:abc)+ 匹配一个或多个 abc,但不捕获。

7.替代:

    • |:表示“或”操作。例如,a|b 匹配 a 或 b。

8.断言:

    • (?=...):正向前瞻,匹配当前位置后面跟着的模式。例如,a(?=b) 匹配 a,当 a 后面跟着 b 时。
    • (?!...):负向前瞻,匹配当前位置后面不跟着的模式。例如,a(?!b) 匹配 a,当 a 后面不跟着 b 时。


更详细的参考文档如下:  

遇到需要正则表达式匹配的问题时可以参考。当然,现在更方便的方式是带着问题去问chatGPT

PostgreSQL

PostgreSQL 9.3 文档: 模式匹配 - Redrock Postgres (rockdata.net):https://www.rockdata.net/zh-cn/docs/9.3/functions-matching.html#FUNCTIONS-LIKE

MySQL:  

MySQL 正则表达式 | 菜鸟教程 (runoob.com):https://www.runoob.com/mysql/mysql-regexp.html

Python:  

Python 正则表达式 | 菜鸟教程 (it028.com):http://it028.com/python-reg-expressions.html

正则表达式指南 — Python 3.12.5 文档:https://docs.python.org/zh-cn/3.12/howto/regex.html


03

正则表达式的使用示例(适用于PostgreSQL)

1.基本匹配

SELECT regexp_matches('The quick brown fox', 'quick');
-- 结果: {quick}

解释:匹配字符串中第一次出现的 quick。

2.字符类

SELECT regexp_matches('abc 123', '[a-z]+');
-- 结果: {abc}

解释:匹配连续的小写字母字符。

3.量词

SELECT regexp_matches('aaabb', 'a{2,4}');
-- 结果: {aaaa}

解释:匹配 2 到 4 个连续的 a。

4.捕获组    

SELECT regexp_matches('2024-08-28', '(\d{4})-(\d{2})-(\d{2})');
-- 结果: {2024, 08, 28}

解释:捕获年、月、日。

5.前瞻

SELECT regexp_matches('123abc456', '\d+(?=abc)');
-- 结果: {123}

解释:匹配 123,当它后面跟着 abc 时。

正则表达式是处理和操作文本的强大工具,通过定义复杂的匹配模式,能够高效地完成各种文本处理任务。掌握正则表达式的基本语法和功能,将大大提升文本数据处理的能力。

该文章在 2024/9/4 11:47:23 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved