正则表达式匹配
匹配字符串字面值
匹配数字字符串
\d
,[0-9]
匹配非数字字符串
\D
,^\d
,[^0-9]
匹配单词字符
\w
,与\D
的区别是\D
会匹配空格,标点符号等字符,\w
只匹配字母,数字和下划线- 英语环境下即:
[_a-zA-Z0-9]
匹配非单词字符
\W
,[^_a-zA-Z0-9]
匹配空白符
\s
,[ ]
- 制表符:
\t
- 换行符:
\n
- 回车符:
\r
匹配任意字符
- 粗略匹配:
.{7}
,任意匹配7个字符 - 确定边界:
\bA.{5}T\b
,匹配A
开头,T
结尾,中间任意5个字符的字符串 - 匹配某一长度的单词:
\b\w{7}\b
- 匹配0个或多个字符:
.*
.相当于[^\n]
边界
行的起始和结束
- 匹配行或字符串的起始要使用脱字符:
^
- 匹配行或字符的结尾要使用美元符号:
$
单词的边界和非边界
*\b
,\B
选择,分组和向后引用
选择操作
- 基本:
(the|The|THE)
子模式
- 指分组中的一个或多个分组
- 子模式可以是不依赖的
(the|The|THE)
- 也可以是依赖的
(t|T)h(e|eir)
- 括号对子模式不是必须的
捕获分组和向后引用
- 当一个模式的全部或部分内容由一对括号分组时,它对内容进行捕获并临时存储于内存中
- 可以通过后向引用重用捕获的内容:
\1
,$1
,引用的是第一个捕获的分组,以此类推
非捕获分组
- 不会将其内容存储在内存中
量词
基本匹配
?
,0个或一个+
,一个或多个*
,0个或多个
匹配特定次数
{n}
,精确匹配n次{n,}
,匹配n次或多次{m,n
},匹配m至n次
懒惰量词
- 匹配尽可能少的次数,也可能不匹配任何内容,0次
- 简单就是在量词最后加
?
占有量词
- 尽量匹配多的内容,但与贪心匹配不同,它不进行回溯,也不会放弃找到的内容
- 简单就是在量词最后加
+