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

相关推荐
月光水岸New2 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6752 小时前
数据库基础1
数据库
我爱松子鱼2 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo3 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser4 小时前
【SQL】多表查询案例
数据库·sql
Galeoto4 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)4 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231114 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白4 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码4 小时前
【SQL实验】触发器
数据库·笔记·sql