定界符
除:字母、数定、\以外都可以,一般使用//
原子
在正则表达式中,可以单独使用的字符,都是原子
能打印的(字母、数字、符号),不能打印的(换行、空格)
有特殊意义的符号,要转义+ * ? . ( )
可以直接使用一些代表范围的原子
\d 任意一个数字
\w 字符 a-zA-Z0-9_
\s 空白字符 空格、\t \n \r \f
大写版本,反过来
自定义原子表
[123] 这是一个原子,只在一个匹配,就成功
[0-9] 中间的"-"表示是一个范围
[^0-9] ^取反,只有^在[]中,才是这个意思
\d [0-9]
\D [^0-9]
\w [a-zA-Z0-9_]
\W [^a-zA-Z0-9_]
\s [\r\n\t\f\v ]
\S [^\r\n\t\f\v ]
. 点
默认情况下,能匹配除换行符以外的任意
元字符
是特殊字符,用于修饰原子,不能单独出现
* 被修饰的原子,可有可无 0 1 或多次
+ 1或多 至少有一个
? 要么有,要么没有 0 或1
* --> {0,}
+ --> {1,}
? --> {0,1}
{} 范围{n,m} 最少和最多的个数
^ 在中括号中表示取反
写在最前面,必须以这个正则表达式开始
$ 写在最后面,表过必须以这个正则表达式结尾
| 或者
\b 边界
\B 非边界
()
改变优先级
作为大原子
*作为子模式使用
?: 写在括号中,取消子模式
*反向引用 \\1 表过用前面第一个()里的内容
优先级
\
() (?:) []
* + ? {}
^ $ \b
|
模式修正符 放在定界符外 一次使用一个
用于对正则调优
i 不区分大小写
m 不加的情况下,字符串作为单行处理,加上会影响到$
U 取消贪婪模式 或者在 .* .+ 的后面加上? 相互取消
s 让.能代表换行符(.默认不能匹配换行符)
x 删除正则中间的空格