简介

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),常见于匹配子串。

基本语法为:

/pattern/flags

这在各种语言中都有出现,比如PHP中的正则函数grep_match就是用来匹配字符串。

当然不仅仅局限于编程语言当中,他可以出现在任何需要匹配字符子串的场景中,比如处理文档时检索某个内容:

  • 检索当前文件中的变量

巧妙的使用正则匹配可以大幅提升工作效率。

基础用法

  1. 直接在/中输入想要匹配的内容,最基本的用法,只能匹配到一模一样的字符串,跟搜索没有区别。

  2. [abc]:括号意为可选项,即匹配[...]中所有字符的其中一个。

  3. [a-z]:表示一个区间,匹配区间内的所有字符,包括边界。

修饰符

标记也称为修饰符,正则表达式的标记用于指定额外的匹配策略。

  1. i:ignore - 不区分大小写。

  2. g:global - 全局匹配。查找所有的匹配项。

  3. m:multi line - 多行匹配。使边界字符 ^$ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。

  4. s:特殊字符圆点 . 中包含换行符 \n

特殊的字符集

有些字符可以代表一些常用的字符集。通常大写与小写的集合是完全相对立的。

  1. \w/\W:小写w匹配字母、数字、下划线,等价于 [A-Za-z0-9_]。大写则相反。

  2. \s/\S:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。大写则相反。

  3. \d/\D:匹配一个数字字符。等价于 [0-9]。大写则相反。

  4. \b/\B:匹配一个单词边界,也就是指单词和空格间的位置。例如,er\b可以匹配never中的er,但不能匹配verb中的 er。大写则相反。

特殊的符号

符号在正则中也有一些特殊的含义。

  1. \:转义符。
  2. ^:匹配输入字符串的开始位置。在[]中则为取反。
  3. $:匹配输入字符串的结束位置。
  4. *:匹配前面的子表达式0或n次。
  5. +:匹配前面的子表达式1或n次。
  6. ?:匹配前面的子表达式0或1次。
  7. {n}:n 是一个非负整数。匹配确定的 n 次。例如:a{2}=匹配2个a、a{2,}=匹配2个以上的a、a{2,4}=匹配2-4个a。
  8. .:匹配除换行符(\n、\r)之外的任何单个字符。
  9. x|y:匹配 x 或 y。
  10. \f:匹配一个换页符。
  11. \n:匹配一个换行符。
  12. \r:匹配一个回车符。
  13. \t:匹配一个制表符。
  14. \v:匹配一个垂直制表符。