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 个字母的字符串)

相关推荐
老纪的技术唠嗑局1 小时前
OceanBase PoC 经验总结(二)—— AP 业务
数据库
阿里云大数据AI技术2 小时前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
m0_623955664 小时前
Oracle使用SQL一次性向表中插入多行数据
数据库·sql·oracle
阿蒙Amon5 小时前
C#读写文件:多种方式详解
开发语言·数据库·c#
东窗西篱梦5 小时前
Redis集群部署指南:高可用与分布式实践
数据库·redis·分布式
就是有点傻6 小时前
C#如何实现中英文快速切换
数据库·c#
jnrjian6 小时前
Oracle RAC环境 加错数据文件 的修复 归档非归档都没问题
sql·oracle
1024小神7 小时前
hono框架绑定cloudflare的d1数据库操作步骤
数据库
KellenKellenHao8 小时前
MySQL数据库主从复制
数据库·mysql
@ chen9 小时前
Redis事务机制
数据库·redis