正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
表达式规则
普通字符
[abcd]匹配所有a b c d字符
[^abcd]匹配除了a b c d的字符
[A-Z]匹配所有大写字母
[a-z]匹配所有小写字母
/./匹配除\n \r之外的字符,相当于[^\n\r]
[\s]匹配所有空白符,包括换行符 [\S]匹配所有非空白符
/\w/匹配字母、数字、下划线 等于[A-Za-z0-9]
非打印字符
\cx 匹配control+x(字符),x为A-Z,a-z
\f 匹配换页符
\n匹配换行符
\r 匹配回车符
\t 匹配制表符
\v匹配垂直制表符
特殊字符
^字符串开始位置
$ 字符串结尾位置
*匹配子表达式零次或多次
+匹配子表达式一次或多次
?匹配子表达式零次或多次,当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
x|y 匹配x或y
\b 匹配单词边界,如oo\b可以匹配"too"中的oo,不能匹配"food"中的oo
\B匹配非单词边界,如oo\B可以匹配"food"中的oo,不能匹配"too"中的oo
\d匹配数字字符,等于[0-9]
\D匹配非数字字符,等于[^0-9]
限定符
{n}n是非负整数,如o{2}匹配两个o
{n,}n非负整数,如o{2,}匹配两个以上o
{n,m}n<=m,如o{1,3}匹配前三个o
选择
圆括号()将所有选择项括起来,相邻选择项用|分隔,()会把每个分组匹配的值保存,
如23465safjkh797809bjkhkh0djkahd,匹配规则/([1-9])[a-z]+)/
匹配两个结果n[0]=5safjkh n[1]=9bjkhkh
exp1(?=exp2):查找 exp2 前面的 exp1
(?<=exp2)exp1:查找 exp2 后面的 exp1
exp1(?!exp2):查找后面不是 exp2 的 exp1
(?<!exp2)exp1:查找前面不是 exp2 的 exp1
修饰符
i 搜索时不区分大小写
g 全局匹配
m 多行匹配
s 特殊字符.包含换行符\n
运算优先级
正则表达式从左往右进行计算,优先级如下
转义符\
圆括号和方括号(), (?:), (?=), []
限定符*, +, ?, {n}, {n,}, {n,m}
定位点和序列(即:位置和顺序)^, $, \任何元字符、任何字符
替换,或:|