正则表达式 For Beginner

注意
本文最后更新于 2022-02-03,文中内容可能已过时。

正则表达式(英语:Regular Expression,常简写为regex、regexp或RE),又称正则表示式正则表示法规则表达式常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sedgrep)普及开的。

需要转义的特殊字符:

1
.[{()\^$|?*+

就像在其它任何语言中那样,转义需要在符号前加上\

匹配规则:

 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.-]+

提取文件中的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