1. “?” 是表示其前一个字母出现0次或者1次。
例如:正则表达式:used?
可以匹配到"use"和"used"
2. “*” 会匹配0个或者多个字符。
例如:正则表达式:ab*c
代表’b’可以出现0次或者多次,明确规定了’a’和’c’中间只能出现0个或者多个’b’。
i. 可以匹配到:
1) ac
2) abc
3) abbbbbbbbc
ii. 不可以匹配到:
1) adc
2) adddddddddddc
3. “+” 会匹配1次以上的字符。
例如:正则表达式:ab+c
代表’a’和’c’中间只能出现1个或者多个’b’。
i. 可以匹配到:
1) abc
2) abbbbbbbbc
ii. 不可以匹配到:
1) ac
2) adc
3) adddddddddddc
4. {数字}:表示其前面的字母必须出现的次数。
a. 例如:正则表达式:ab{6}c
,表示:‘a’和’c’中间必须有6个’b’。
i. 可以匹配到:
1) abbbbbbc
ii. 不可以匹配到:
1) abc
2) ac
3) adc
4) abbbc
b. {}内的数字可以写成范围:
i. 如:ab{2,6}c
,表示:'a’和’c’之间的’b’可以出现2次到6次,满足这个条件即可匹配。
ii. 如果希望’b’出现2次以上,则可以省略后面的数字,如:ab{2,}c
。
5. 将多个字符进行分组,一次匹配多个字符,使用()括起来。
如想要匹配:“ab”、“abab"或者"ababab”,则可以写成:(ab)+
,这里的"ab"就是一组,可以匹配一组以上的"ab"。
6. 或运算符 “|”。如:要匹配"a cat"或者"a dog"可以写成:a (cat|dog)
。
注意这里的括号是必须的,a cat|dog
表示匹配:“a cat"或者"dog”。
7. 字符类:
a. 要匹配由’a’、'b’和’c’这几个字母构成的单词,正则表达式可以写成:[abc]+
。
b. [a-z]+
代表所有的小写英文字母;[A-Z]+
代表所有的大写英文字母,[a-zA-Z]+
代表所有的字母。
c. [0-9]+
代表所有的数字,[a-zA-Z0-9]+
代表所有英文字母和数字
8. 表示非的意思,在中括号内的表达式前面写一个"^",,例如:
[^0-9]+
表示非数字,包括换行符。
9. 元字符:元字符由反斜杠开头"":
a. \d
(小写)表示数字字符,等价于 [0-9]
。
b. \w
(小写)代表单词字符,也就是所有的英文字符、数字字符以及下划线,等价于 [a-zA-Z0-9]
c. \s
(小写)代表空白符(包含tab和换行符)
d. \D
(大写)代表非数字字符,
e. \W
(大写)代表非单词字符
f. \S
(大写)代表非空白字符。
g. \b
(小写)代表单词的开头或结尾,也就是单词的分界处。
h. \B
(大写)代表不是单词的开头或结尾,也就是单词中间的字母与字母之间的地方。
i. \.
代表’.’ ,是’.'的转义字符,因为.
本身代表任意字符。
10. 句点:.
代表任意字符,但不包含换行符。"."本身用 \.
表示,用分斜杠做转义。
11. 特殊字符:
^
会匹配行首,$
会匹配行尾。
i. 如:^a
只会匹配行首的 a。
ii. 如:a$
只会匹配行尾的 a。
12. 正则表达式高级概念:
- 贪婪与懒惰匹配:
- 捕获
- 断言
- 递归
- 平衡组
13. 特殊字符:
- 字符"(",用正则表达式
\(
匹配。 - 字符")",用正则表达式
\)
匹配。 - 字符"/",用正则表达式
\/
匹配。 - 字符"",用正则表达式
\\
匹配。 - 字符".",用正则表达式
\.
匹配。 - 字符"[",用正则表达式
\[
匹配。 - 字符"]",用正则表达式
\]
匹配。
14. 例子:匹配IP地址:
\b((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b