正则表达式
- note
-
\d
:匹配数字 -
[0-9]
:匹配数字(字符组),在[]
中对数字进行限定 -
\D
:匹配任意一个非数字字符 -
.
:通配符用以匹配任意字符(某些情况下不能匹配起始符) -
(\d)\d\1
:()捕获分组,并且使用\l进行后向引用 -
{}
:元字符 -
*
:重复零次或更多次 -
+
:重复一次或更多次 -
?
:重复零次或一次 -
\b
:零宽度断言,非单词边界 -
\B
:零宽度断言,单词边界 -
^
:标记起始位置,在[]
中出现表示取反 -
$
:标记结束位置 -
|
:多个选择 -
\w
:匹配字母或数字或下划线或汉字,等同于[_a-zA-Z0-9]
-
-
\s
:任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格 -
\
:转义字符 -
{n}
:重复n次 -
{n,}
:重复n次或更多次 -
{n,m}
:重复n到m次 -
$1 | $2
:后向引用 -
.*?
:.? 是一个固定的搭配,.和代表可以匹配任意无限多个字符,
加上?表示使用非贪婪模式进行匹配,也就是我们会尽可能短地做匹配,
以后我们还会大量用到.*?的搭配。 - 在
dotall
下.
会匹配包括换行符在内的所有字符 -
\A \Z
:分别为匹配主题词的开头和结尾 -
\Q$\E
:之间的都会被认为是普通字符 - (?i):忽略大小写,下面几种等同
-
(?i)(?:the)
|(?:(?i)the)
|(?i:the)
-
-
grep
命令执行正则表达式 -
ERE
模式:不需要转义BRE
模式:需要转义 -
\l
:不匹配任何字符,而是会将紧接其后的字母变为小写 -
\u
:将紧接其后的字母变为大写 -
\U
:将紧接其后的所有字母变为大写 -
\L
:将紧接其后的所有字母变为小写 - 命名分组
-
?<one>
和?<two>
将分组命名为one和two -
$+{one}
和$+{two}
引用上述两个分组
-
- 原子分组用以关闭部分回溯操作
- 并集和差集:
[0-3[6-9]]
|[0-3&&[6-9]]
- 量词:
- 贪心:匹配整个字符串,寻找尽可能大的,然后进行回溯
- 使用
?
,则变成懒惰的,一个个查找 - 使用
+
,则变成占有量词,只尝试一次,不会回溯
- 正前瞻,反前瞻,正后顾,反后顾