正则表达式的语法分为4部分
1.正则定界符
2.正则表达式中的原子
3.正则表达式的元字符(原子修饰符)
4.正则表达式的模式修正符
定界符
用来声明正则表达式的边界的符号
常用的是'//';
实际上数字字母'\' 之外的都可以 ~~!!@@##$$%%^^&&**()++--
推荐使用'//';
注意: 正则表达式有两个定界符
一个是字符串的引号边界符
一个是正则表达式的定界符
如果正则表达式定界符是$
那么只能使用单引号
原子
正则表达式中原子也是最小的组成单位
a.普通字符
字母数字下划线
b.特殊字符
~!@#$%^&*
c.非打印字符
\f --- 分页符
\n --- 换行符
\r --- 回车符
\v --- 垂直制表符
\t --- 制表符
\d 匹配所有数字
\D 匹配非数字
\w 匹配字母 数字 下划线
\W 匹配所有非字母数字下划线
\s 匹配所有空白字符 如 空格 \n\f\v
\S 匹配所有非空白字符
.匹配所有 除\n以外
转义字符 使用\V匹配
正则表达式的元字符(原子修饰符)
[] 原子列表
[abcdef] 可选列表 只能匹配原子列表中的一个字符
[3-5] 连续的字符 345
[^abc] 排除列表 除了里面的字母都可以
原子数量修饰符
+ 表示一个或者多个
? 表示一个或者0个
* 表示0个、一个或者多个
{}
{m,n} 表示m到n个
{m,} 表示m个以上
{m} 表示m个
词边界修饰符
什么是词边界
可以分割单词的都是,非字母数字下划线
\b 词边界
\B 非词边界
只对英文有效
字符串边界
^ 以指定字符开头
$ 以指定字符结尾
^字符串$ 精确匹配字符串
选择修饰符
|
逻辑或
a|b 匹配a或者b
abc|def 匹配abc或者def 字符串的结合优先级高于选择
ab(c|d)ef 匹配abdef 或者匹配abcef
模式单元
()
改变优先级
将多个原子视为一个原子
将匹配的内容暂存在内存
可以将括号的内容在函数的辅助下反向引用
// 后向引用,是目标字符串中有重复内容的时候,可以这么用。如果只是模式一样,那是不行的。
\1\2\3...
模式修正符
i 忽略大小写
x 忽略空白
s 视为一行 .匹配\n
m 视为多行 .不匹配\n
U 修改贪婪模式
(.*) 默认贪婪模式
(.*?) 默认非贪婪模式