正则表达式(英语:Regular Expression,常简写为regex、regexp或RE),又称正则表示式、正则表示法、规则表达式、常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
语法总结#
需要转义的特殊字符:
就像在其它任何语言中那样,转义需要在符号前加上\
。
匹配规则:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| . - 除了新行外的任何字符
\d - 数字 (0-9)
\D - 非数字 (0-9)
\w - 单词字母 (a-z, A-Z, 0-9, _)
\W - 非单词字母
\s - 空字符 (space, tab, newline)
\S - 非空字符 (space, tab, newline)
\b - 单词边界
\B - 非单词边界
^ - 字符串开头(默认将一行看作一整个字符串)
$ - 字符串结尾(默认将一行看作一整个字符串)
[] - 匹配字符集
[^ ] - 匹配除了字符集外的字符
| - 或者
( ) - Group
Quantifiers:
* - 0 or More
+ - 1 or More
? - 0 or One
{3} - Exact Number
{3,4} - Range of Numbers (Minimum, Maximum)
[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[0-9a-zA-Z.-]+
|
一些例子:
匹配人名:
1
2
3
4
5
6
7
| Mr. Schafer
Mr Smith
Ms Davis
Mrs. Robinson
Mr. T
M(r|s|rs)\.?\s[A-Z]\w*
|
匹配两种格式的电话号码:
1
2
3
4
5
| 123.555.1234
800-555-4321
900-555-4321
\d{3}[.-]\d{3}[.-]\d{4}
|
匹配三种格式的电子邮件:
1
2
3
4
5
| CoreyMSchafer@gmail.com
corey.schafer@university.edu
corey-321-schafer@my-work.net
[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[0-9a-zA-Z.-]+
|
按Group引用#
提取文件中的url,并截取出其中的顶级域名:
1
2
3
4
5
6
7
8
9
10
11
12
| https://www.google.com
http://coreyms.com
https://youtube.com
https://www.nasa.gov
匹配https?://(www\.)?(\w+)(\.\w+)
引用:$2$3
结果:
google.com
coreyms.com
youtube.com
nasa.gov
|