正则表达式 Cheatsheet
用来匹配和处理文本的字符串。 基本用途是查找和替换。一种不完备的程序设计语言。
锚点
^
字符串开头,或多行模式中的行开头\A
字符串的开始$
字符串结尾,或多行模式中的行尾\Z
字符串结束\b
字边界\B
不是单词边界\<
词的开头\>
词尾
字符集
\c
控制字符\s
任何一个空白字符([\f\n\r\t\v])\S
任何一个非空白字符([^\f\n\r\t\v])\d
任何一个数字字符\D
任何一个非数字字符\w
任何一个字母数字字符或下划线字符([a-zA-Z0-9_])\W
任何一个非字母数字或非下划线字符([^a-zA-Z0-9_])\x
十六进制数字\O
八进制数
量词
+
1 个或更多*
0 个或更多?
0 个或 1 个{}
匹配指定个数{3}
精确的 3 个{3,}
3 个或更多{3,5}
3,4,5
添加 ?
表示非贪婪模式,懒惰型匹配,匹配最小子集。
1 | +? |
断言
?=
前瞻断言?!
负前瞻?<=
后向断言?!= or ?<!
负面回顾?>
一次性子表达式?()
条件 [if then]?()|
条件 [if then else]?#
评论
转移
\
转义后面的字符\Q
Begin literal sequence\E
End literal sequence
『转义』是一种处理正则表达式中具有特殊含义的字符的方式,而不是特殊字符。
常用元字符
^
[
.
$
{
*
(
\
+
)
|
?
<
>
特殊字符
\n
新行\r
回车\t
制表符\v
垂直制表符\f
Form feed\xxx
八进制字符 xxx\xhh
十六进制字符 hh
组合范围
.
除换行符 (\n) 以外的任何字符(a|b)
a 或 b(...)
组(?:...)
被动(非捕获)组[abc]
范围 a b c[^abc]
not (a or b or c)[a-q]
从 a 到 q 的小写字母[A-Q]
从 A 到 Q 的大写字母[0-7]
从 0 到 7 的数字\x
组/子模式编号『x』
范围包括在内。
例子
回溯引用
下面例子匹配 空格 字符 空格
下面的例子使回溯引用
解释回溯引用,\1
用来获取(\w+)
中的字符串。第一个匹配上的of
被\1
引用,就变成表达式[ ]+(\w+)[ ]+of
。
其中\1
代表模式里的第一个子表达式,\2
就会代表着第二个子表达式,以此递推。
替换
大小写转换测试工具不支持,待测试
向前查找、向后查找
必须要放到一个字表达式中,如下例子,根据:
来匹配,但是不消费他。(?=)
向前查找
(?<=)
向后查找
(?!)
负向前查找(?<!)
负向后查找
嵌入条件
(?(brackreference)true-regex)
其中?
表明这是一个条件,括号里的brackreference
是一个回溯引用,true-regex
是一个只在backreference
存在时才会被执行的子表达式。