在开发时,常常需要用到字符串匹配的需求,而由于匹配需求的复杂性,我们不能仅限于 findstr() 函数,为了解决这个问题,我们需要引入正则表达式的概念,正则表达式在脚本语言中十分好用,但其规则需要强行记忆,因此写下这篇文章备份,也可以当作工具书查看

限定符

  • ?:前面的字符只出现 0 次或 1 次,例如:/ab?c,会匹配 abcac
  • *:前面的字符出现 0 次或无数次,例如:/ab*c,会匹配 abcabbbcac
  • +:前面的字符出现 1 次或无数次,例如:/ab+c,会匹配 abcabbbc,但不会匹配 ac
  • {start, end}:实现对前面的字符更精细的控制,可以限定出现的次数,例如:/ab{2}c ,只会匹配 abbc/ab{2,4}c,则会匹配 abbcabbbcabbbbc/ab{2,}c ,则会匹配 abbcabbbc 等,b 可以出现 2 次及以上
  • (),会将括号内的内容作为一个整体,后面可以添加上述限定符修饰

或运算符

|:运算符表示条件的或判断,例如:a (cat|dog) ,则匹配 a cata dog

字符类

  • []:表示匹配的字符只能取自于方括号内的内容,例如:/[abc]+ 就只会匹配全句中只包含 abc 字母的
  • [a-zA-Z0-9]+ :表示匹配所有的字母小写、字母大写和数字
  • [^0-9]+:表示匹配所有数字除外的字符

元字符

  • \d :数字字符,等价于 [0-9]
  • \w:英文字符、数字和下划线
  • \s:空白符,包含 tab 字符和换行符
  • \D:非数字字符,等价于 [^0-9]
  • \W:非英文字符
  • \S:非空白符
  • .:代表任意的字符(不包含换行符
  • ^a:匹配行首
  • a$:匹配行尾
  • \b:表示单词字符的边界,表示匹配文本的结束