正则表达式速查表
每当遇到写正则表达式处理问题时,我总会打开网页搜索一番,有时候要找很久,因此我总结了常用的元字符,以供随时查找!
基本元字符
|
: 逻辑「或」;abc
+a|b
=>a
b
[]
: 匹配集合中的一个字符;cde
+[abc]
=>c
[^]
: 对集合取非;cde
+[^abc]
=>d
-
: 定一个区间;cde
+[a-c]
=>c
\
: 对下一个字符转义。a*
+\*
=>*
数量元字符
.
: 可以匹配任意字符一次;abc
+.
=>a
+
: 可以重复匹配一次或多次;aab
+a+
=>aa
+?
:+
的懒惰版本;aab
+a+?
=>a
*
: 可以重复匹配零次或多次;aab
+a*
=>aa
*?
:*
的懒惰版本;aab
+a*?
=>''
?
: 可以重复匹配零次或一次(即子表达式是可选的);aab
+a?
=>a
{a}
: 可以重复匹配a次;aab
+a{2}
=>aa
{b,c}
: 可以重复匹配b到c次;aab
+a{1,3}
=>aa
{d,}
: 可以重复匹配大于等于d次;aab
+a{1,}
=>aa
{d,}?
:{d,}
的懒惰版本。aab
+a{1,}?
=>a
位置元字符
^
or\A
: 匹配字符串的开头;$
or\Z
: 匹配字符串的结尾;\<
: 匹配单词的开头;\>
: 匹配单词的结果;\b
: 匹配单词边界(boundary);\B
: 匹配非单词边界。
特殊元字符
\d
: 任意一个数字字符(等价于[0-9]
);\D
: 任意一个非数字字符(等价于[^0-9]
);\w
: 任意一个数字字母下划线字符(等价于[a-zA-Z0-9_]
);\W
: 任意一个非数字字母下划线字符(等价于[^a-zA-Z0-9_]
);\s
: 任意一个空白字符(等价于[\f\n\r\t\v]
);\S
: 任意一个非空白字符(等价于[^\f\n\r\t\v]
);\f
: 换页符;\n
: 换行符;\r
: 回车符;\t
: 制表符;\v
: 垂直制表符;\0
: 匹配一个八进制数字;\x
: 匹配一个十六进制数字;\c
: 匹配一个控制字符;[\b]
: 退格字符。
回溯引用和前后查找
()
: 可以放子表达式在括号中(子表达式可以嵌套,理论上来说没有上限,但建议适可而止);(?:)
: 只分组,但不捕获;\1
: 匹配第1个子表达式;?=
: 向前查找(从左到右,即右存在);?<=
: 向后查找(从右到左,即左存在);?!
: 负向前查找(从左到右,即右不存在);?<!
: 负向后查找(从右到左,即左不存在);?()
: 条件 if then;?()|
: 条件 if then else。