SQL-REGEX-常见正则表达式的使用

SQL-REGEX-常见正则表达式的使用

在SQL中,正则表达式(Regex)的使用可以帮助进行更灵活和精确的模式匹配和数据筛选。不同的数据库管理系统对于正则表达式的支持略有差异,但大体都是相似的。

Tips:

模式 描述 匹配内容
* Zero or more instances of string preceding it 匹配之前字符串的零个或多个实例
+ One or more instances of strings preceding it 匹配之前字符串的一个或多个实例
. Any single character 匹配任何单个字符
? Match zero or one instances of the strings preceding it 匹配之前字符串的零个或一个实例
^ Beginning of string 匹配字符串的开头
$ End of string 匹配字符串的结尾
[abc] Any character listed between the square brackets 匹配方括号内列出的任何字符
[^abc] Any character not listed between the square brackets 匹配方括号内未列出的任何字符
[A-Z] match any upper case letter 匹配任何大写字母
[a-z] match any lower case letter 匹配任何小写字母
[0-9] match any digit from 0 through to 9 匹配从 '0' 到 '9' 的任何数字
[[:<:]] matches the beginning of words 匹配单词的开头
[[:>:]] matches the end of words 匹配单词的结尾
[:class:] matches a character class 匹配字符类,例如 [:alpha:] 匹配字母,[:space:] 匹配空白,[:punct:] 匹配标点符号,[:upper:] 匹配大写字母
`p1 p2 p3`
{n} n instances of preceding element 匹配前一个元素的 n 次实例
{m,n} m through n instances of preceding element 匹配前一个元素的至少 m 次至多 n 次实例

Eg:

  1. * (零个或多个实例)
    • 模式: a*
      • 匹配: ``, a, aa, aaa
    • 模式: 12*
      • 匹配: 1, 12, 122, 1222

  1. + (一个或多个实例)
    • 模式: a+
      • 匹配: a, aa, aaa(但不匹配空字符串)
    • 模式: 12+
      • 匹配: 12, 122, 1222(至少包含一个'1'后跟至少一个'2')

  1. . (任何单个字符)
    • 模式: a.b
      • 匹配: acb, a@b, a1b(其中 . 可以匹配任何字符)
    • 模式: ...
      • 匹配: 123, abc, @#$(任意三个字符的组合)

  1. ? (零个或一个实例)
    • 模式: colou?r
      • 匹配: color, colour('u' 可选)
    • 模式: 10?
      • 匹配: 1, 10('0' 可选)

  1. ^ (字符串的开头)
    • 模式: ^abc
      • 匹配: abc, abcdef(只有在字符串开头是'abc'时匹配)
    • 模式: ^[A-Z]
      • 匹配: A, B, C(只有在字符串开头是大写字母时匹配)



  1. $ (字符串的结尾)
    • 模式: xyz$
      • 匹配: xyz, abcxyz(只有在字符串结尾是'xyz'时匹配)
    • 模式: [0-9]$
      • 匹配: 1, 2, 9(只有在字符串结尾是数字时匹配)
  1. [abc] (方括号内列出的任何字符)
    • 模式: [aeiou]
      • 匹配: a, e, i, o, u(匹配任何元音字母)
    • 模式: [0-5]
      • 匹配: 0, 1, 2, 3, 4, 5(匹配 0 到 5 的任何数字)

  1. [^abc] (方括号内未列出的任何字符)
    • 模式: [^0-9]
      • 匹配: a, A, @(匹配除了数字以外的任何字符)
    • 模式: [^aeiou]
      • 匹配: b, c, d(匹配除了元音字母以外的任何字母)

  1. [A-Z] (任何大写字母)
    • 模式: [A-F]
      • 匹配: A, B, C, D, E, F(匹配从'A'到'F'的任何大写字母)
    • 模式: [M-Z]
      • 匹配: M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z(匹配从'M'到'Z'的任何大写字母)

  1. [a-z] (任何小写字母)
    • 模式: [a-h]
      • 匹配: a, b, c, d, e, f, g, h(匹配从'a'到'h'的任何小写字母)
    • 模式: [p-z]
      • 匹配: p, q, r, s, t, u, v, w, x, y, z(匹配从'p'到'z'的任何小写字母)

  1. [0-9] (任何数字)
    • 模式: [1-5]
      • 匹配: 1, 2, 3, 4, 5(匹配从'1'到'5'的任何数字)
    • 模式: [7-9]
      • 匹配: 7, 8, 9(匹配从'7'到'9'的任何数字)

  1. [[:<:]] (单词的开头)
    • 模式: [[:<:]]foo
      • 匹配: foobar, foo123(匹配以'foo'开头的单词)
    • 模式: [[:<:]]bar
      • 匹配: bar, barista(匹配以'bar'开头的单词)

  1. [[:>:]] (单词的结尾)
    • 模式: foo[[:>:]]
      • 匹配: endfoo, foo(匹配以'foo'结尾的单词)
    • 模式: bar[[:>:]]
      • 匹配: bar, barista(匹配以'bar'结尾的单词)

  1. [:class:] (字符类)
    • 模式: [[:digit:]]
      • 匹配: 0, 1, 2, ..., 9(匹配任何数字)
    • 模式: [[:alpha:]]
      • 匹配: a, B, C, ..., Z(匹配任何字母)

  1. p1|p2|p3 (选择)
    • 模式: cat|dog
      • 匹配: cat, dog(匹配'cat'或'dog')
    • 模式: yes|no|maybe
      • 匹配: yes, no, maybe(匹配'yes'、'no'或'maybe')

  1. {n} (前一个元素的 n 次实例)
    • 模式: a{3}
      • 匹配: aaa(匹配三个连续的'a')
    • 模式: [0-9]{2}
      • 匹配: 12, 34, 56(匹配两位数的数字)

  1. {m,n} (前一个元素的 m 到 n 次实例)
    • 模式: x{2,4}
      • 匹配: xx, xxx, xxxx(匹配两到四个连续的'x')
    • 模式: [A-Za-z]{5,10}
      • 匹配: abcdef, AbCdEfG, xyzWXYZ123(匹配包含 5 到 10 个字母的字符串)

相关推荐
kuiini24 分钟前
python学习-08【正则表达式】
python·学习·正则表达式
问道飞鱼2 小时前
springboot-数据库事务支持
数据库·spring boot·后端
fFee-ops3 小时前
321. 拼接最大数
java·linux·数据库
敲代码不忘补水3 小时前
Python 正则表达式详解:从基础匹配到高级应用
java·python·正则表达式
扬子4 小时前
golang中连接达梦数据库使用域名来代替IP时会出现解析问题
开发语言·数据库·golang
天冬忘忧4 小时前
SQL题目分析:打折日期交叉问题--计算品牌总优惠天数
数据库·sql
jamesdodo4 小时前
SQL创建索引加快查询速度的方法
数据库·sql·索引·加快sql查询
洛阳泰山4 小时前
Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sql)
数据库·python·langchain·交互·通义千问·postgres·chainlit
2407-2 shw4 小时前
seafaring靶场漏洞测试攻略
数据库·sql·文件上传漏洞·命令执行漏洞·文件包含漏洞·xss漏洞
wclass-zhengge4 小时前
MySQL篇(高级字符串函数/正则表达式)(持续更新迭代)
android·mysql·正则表达式