在开发时,常常需要用到字符串匹配的需求,而由于匹配需求的复杂性,我们不能仅限于 findstr()
函数,为了解决这个问题,我们需要引入正则表达式的概念,正则表达式在脚本语言中十分好用,但其规则需要强行记忆,因此写下这篇文章备份,也可以当作工具书查看
限定符
?
:前面的字符只出现 0 次或 1 次,例如:/ab?c
,会匹配abc
、ac
*
:前面的字符出现 0 次或无数次,例如:/ab*c
,会匹配abc
、abbbc
、ac
+
:前面的字符出现 1 次或无数次,例如:/ab+c
,会匹配abc
、abbbc
,但不会匹配ac
{start, end}
:实现对前面的字符更精细的控制,可以限定出现的次数,例如:/ab{2}c
,只会匹配abbc
;/ab{2,4}c
,则会匹配abbc
、abbbc
、abbbbc
;/ab{2,}c
,则会匹配abbc
、abbbc
等,b
可以出现 2 次及以上()
,会将括号内的内容作为一个整体,后面可以添加上述限定符修饰
或运算符
|
:运算符表示条件的或判断,例如:a (cat|dog)
,则匹配 a cat
、a dog
字符类
[]
:表示匹配的字符只能取自于方括号内的内容,例如:/[abc]+
就只会匹配全句中只包含abc
字母的[a-zA-Z0-9]+
:表示匹配所有的字母小写、字母大写和数字[^0-9]+
:表示匹配所有数字除外的字符
元字符
\d
:数字字符,等价于[0-9]
\w
:英文字符、数字和下划线\s
:空白符,包含 tab 字符和换行符\D
:非数字字符,等价于[^0-9]
\W
:非英文字符\S
:非空白符.
:代表任意的字符(不包含换行符)^a
:匹配行首a$
:匹配行尾\b
:表示单词字符的边界,表示匹配文本的结束