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:
*
(零个或多个实例)- 模式:
a*
- 匹配: ``,
a
,aa
,aaa
- 匹配: ``,
- 模式:
12*
- 匹配:
1
,12
,122
,1222
- 匹配:
- 模式:
+
(一个或多个实例)- 模式:
a+
- 匹配:
a
,aa
,aaa
(但不匹配空字符串)
- 匹配:
- 模式:
12+
- 匹配:
12
,122
,1222
(至少包含一个'1'后跟至少一个'2')
- 匹配:
- 模式:
.
(任何单个字符)- 模式:
a.b
- 匹配:
acb
,a@b
,a1b
(其中.
可以匹配任何字符)
- 匹配:
- 模式:
...
- 匹配:
123
,abc
,@#$
(任意三个字符的组合)
- 匹配:
- 模式:
?
(零个或一个实例)- 模式:
colou?r
- 匹配:
color
,colour
('u' 可选)
- 匹配:
- 模式:
10?
- 匹配:
1
,10
('0' 可选)
- 匹配:
- 模式:
^
(字符串的开头)- 模式:
^abc
- 匹配:
abc
,abcdef
(只有在字符串开头是'abc'时匹配)
- 匹配:
- 模式:
^[A-Z]
- 匹配:
A
,B
,C
(只有在字符串开头是大写字母时匹配)
- 匹配:
- 模式:
$
(字符串的结尾)- 模式:
xyz$
- 匹配:
xyz
,abcxyz
(只有在字符串结尾是'xyz'时匹配)
- 匹配:
- 模式:
[0-9]$
- 匹配:
1
,2
,9
(只有在字符串结尾是数字时匹配)
- 匹配:
- 模式:
[abc]
(方括号内列出的任何字符)- 模式:
[aeiou]
- 匹配:
a
,e
,i
,o
,u
(匹配任何元音字母)
- 匹配:
- 模式:
[0-5]
- 匹配:
0
,1
,2
,3
,4
,5
(匹配 0 到 5 的任何数字)
- 匹配:
- 模式:
[^abc]
(方括号内未列出的任何字符)- 模式:
[^0-9]
- 匹配:
a
,A
,@
(匹配除了数字以外的任何字符)
- 匹配:
- 模式:
[^aeiou]
- 匹配:
b
,c
,d
(匹配除了元音字母以外的任何字母)
- 匹配:
- 模式:
[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'的任何大写字母)
- 匹配:
- 模式:
[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'的任何小写字母)
- 匹配:
- 模式:
[0-9]
(任何数字)- 模式:
[1-5]
- 匹配:
1
,2
,3
,4
,5
(匹配从'1'到'5'的任何数字)
- 匹配:
- 模式:
[7-9]
- 匹配:
7
,8
,9
(匹配从'7'到'9'的任何数字)
- 匹配:
- 模式:
[[:<:]]
(单词的开头)- 模式:
[[:<:]]foo
- 匹配:
foobar
,foo123
(匹配以'foo'开头的单词)
- 匹配:
- 模式:
[[:<:]]bar
- 匹配:
bar
,barista
(匹配以'bar'开头的单词)
- 匹配:
- 模式:
[[:>:]]
(单词的结尾)- 模式:
foo[[:>:]]
- 匹配:
endfoo
,foo
(匹配以'foo'结尾的单词)
- 匹配:
- 模式:
bar[[:>:]]
- 匹配:
bar
,barista
(匹配以'bar'结尾的单词)
- 匹配:
- 模式:
[:class:]
(字符类)- 模式:
[[:digit:]]
- 匹配:
0
,1
,2
, ...,9
(匹配任何数字)
- 匹配:
- 模式:
[[:alpha:]]
- 匹配:
a
,B
,C
, ...,Z
(匹配任何字母)
- 匹配:
- 模式:
p1|p2|p3
(选择)- 模式:
cat|dog
- 匹配:
cat
,dog
(匹配'cat'或'dog')
- 匹配:
- 模式:
yes|no|maybe
- 匹配:
yes
,no
,maybe
(匹配'yes'、'no'或'maybe')
- 匹配:
- 模式:
{n}
(前一个元素的 n 次实例)- 模式:
a{3}
- 匹配:
aaa
(匹配三个连续的'a')
- 匹配:
- 模式:
[0-9]{2}
- 匹配:
12
,34
,56
(匹配两位数的数字)
- 匹配:
- 模式:
{m,n}
(前一个元素的 m 到 n 次实例)- 模式:
x{2,4}
- 匹配:
xx
,xxx
,xxxx
(匹配两到四个连续的'x')
- 匹配:
- 模式:
[A-Za-z]{5,10}
- 匹配:
abcdef
,AbCdEfG
,xyzWXYZ123
(匹配包含 5 到 10 个字母的字符串)
- 匹配:
- 模式: