正则表达式学习笔记 - 基础篇

正则表达式学习笔记

一、基本元字符

1. \b
1
2
3
匹配单词的开始或结束。
例如"\bhi\b"表示只匹配"hi"这个单词,
排除类似"him","history"这类包含"hi"的单词。
2. .
1
匹配除了换行符以外的任何字符。
3. 匹配的数量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
3.1 ?   
重复零次或一次

3.2 *
重复零次或者更多。
".*"搭配表示匹配任意长的任意字符串。

3.3 +
重复一次或者更多。

3.4 {}
表示前置字符的匹配次数。
{n} 重复n
{n,} 重复n次或更多次
{n,m} 重复n到m次
例如"\d{3}"表示3个数字;
"\d{3,5}"表示35个数字。
4. \d
1
匹配一位数字
5. \s
1
匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。
6. \w
1
匹配字母或数字或下划线或汉字。
7. ^
1
匹配字符串的开始
8. $
1
匹配字符串的结束
9. 转义字符 \
1
说明要匹配的字符是一个特殊字符、常量或者后者引用。(或引用重复上一次的匹配)
表达式 匹配字符
/n 换行符
// /
/( (
/) )
10. 字符集合 []
1
2
3
4
[a,e,i,o,u] 表示所有元音字母;
[1,3,5,7,9]表示五个奇数;
[0-9]等同于\b
[0-9a-zA_Z]表示所有数字和字母;
11. 分支条件 |
1
2
3
4
5
6
匹配多种规则,从左往右匹配,当匹配到一个条件后就忽略后面的条件了。所以使用分支条件时需要注意条件的前后顺序;
例如:
"\d{5}-\d{4}|\d{5}":可匹配到"12345-1234","96321-6541","12345",如果条件的顺序对调,如下:
"\d{5}|\d{5}-\d{4}":匹配到的变为"12345","96321","12345"

"(公司|企业|厂)$": 匹配以“公司”,“企业”或“厂”结尾的字符串。
12. 分组 ()
1
括号中的子表达式可作为一个整体来进行其他操作。
13. 反义
代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
1
2
3
例子:
"\S+" 匹配不包含空白符的字符串。
"<a[^>]+>" 匹配用尖括号括起来的以a开头的字符串。

二、高级应用

1.后向引用

三、例子

1
2
3
4
5
6
7
8
1. "0\d{2}-\d{8}"
在以下字符串中:
"010-34324234","029-434234232",
"029-453454,022-45351212","0344-21321323"

匹配出:
"010-34324234"
"022-45351212"
1
2
3
4
5
6
7
8
9
10
11
12
13
2. 查找IP地址:
"((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)"
在以下字符串中:
"192.168.1.1","255.255.255.255",
"255.255.255.256","01.01.01.01",
"1.1.1.1","2.2.2.2","3.333.3.3",
"0","010-34324234","029-434234232",
"02956-453454"

匹配出:
"192.168.1.1","255.255.255.255",
"01.01.01.01","1.1.1.1","2.2.2.2"


正则表达式学习笔记 - 基础篇
https://blog.xiaomai.run/2017/03/03/regex-basis/
作者
Astian
发布于
2017年3月3日
许可协议