简介
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),常见于匹配子串。
基本语法为:
/pattern/flags
这在各种语言中都有出现,比如PHP中的正则函数grep_match
就是用来匹配字符串。
当然不仅仅局限于编程语言当中,他可以出现在任何需要匹配字符子串的场景中,比如处理文档时检索某个内容:
检索当前文件中的变量
巧妙的使用正则匹配可以大幅提升工作效率。
基础用法
直接在
/
中输入想要匹配的内容,最基本的用法,只能匹配到一模一样的字符串,跟搜索没有区别。[abc]
:括号意为可选项,即匹配[...]
中所有字符的其中一个。[a-z]
:表示一个区间,匹配区间内的所有字符,包括边界。
修饰符
标记也称为修饰符,正则表达式的标记用于指定额外的匹配策略。
i
:ignore - 不区分大小写。g
:global - 全局匹配。查找所有的匹配项。m
:multi line - 多行匹配。使边界字符 ^ 和 $ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。s
:特殊字符圆点 . 中包含换行符 \n。
特殊的字符集
有些字符可以代表一些常用的字符集。通常大写与小写的集合是完全相对立的。
\w
/\W
:小写w
匹配字母、数字、下划线,等价于[A-Za-z0-9_]
。大写则相反。\s
/\S
:匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
。大写则相反。\d
/\D
:匹配一个数字字符。等价于 [0-9]。大写则相反。\b
/\B
:匹配一个单词边界,也就是指单词和空格间的位置。例如,er\b
可以匹配never中的er,但不能匹配verb中的 er。大写则相反。
特殊的符号
符号在正则中也有一些特殊的含义。
\
:转义符。^
:匹配输入字符串的开始位置。在[]
中则为取反。$
:匹配输入字符串的结束位置。*
:匹配前面的子表达式0或n次。+
:匹配前面的子表达式1或n次。?
:匹配前面的子表达式0或1次。{n}
:n 是一个非负整数。匹配确定的 n 次。例如:a{2}
=匹配2个a、a{2,}
=匹配2个以上的a、a{2,4}
=匹配2-4个a。.
:匹配除换行符(\n、\r)之外的任何单个字符。x|y
:匹配 x 或 y。\f
:匹配一个换页符。\n
:匹配一个换行符。\r
:匹配一个回车符。\t
:匹配一个制表符。\v
:匹配一个垂直制表符。