1.定界符
(1).规定:定界符不能用a-zA-Z0-9\其它的都可以用。定界符必须成对出现,有开始就有结束。
(2).正确的定界符例子:// $$ %% ^^ @@,注意,不能用()做定界符。
(3).\是转义字符,若在正则表达式里需匹配符号/可在该符号/前面加上\转义一下,例:///,也可把定界符/修改为#,例:#/#。
2.正则匹配函数,例:
preg_match($正则变量名, $字符串, $数组形式的结果);
若匹配到了,该函数会把结果放在第三个参数里(数组形式),没有匹配到则返回0。
3.原子——所有可见不可见的字符就是原子
(1).特殊标识的原子:
\d为匹配一个0-9 \D反之;
\w为匹配a-zA-Z0-9_ \W反之;
\s为匹配所有空白字符\n\t\r空格 \S反之
[]为匹配指定范围的原子,如:[0-5]。
(2).[^字符]为不匹配指定区间的字符。
4.元字符——实现匹配多个字符
| 元字符 | 作用 |
|---|---|
| * | 匹配前一个原子0次或任意多次 |
| + | 匹配前一个字符一次或多次 |
| ? | 前面的字符可有可无 |
| . | 匹配除了\n以外的所有字符 |
| | | 或者 |
| ^ | 抑扬符 |
| $ | 必须要以$之前的字符结尾 |
| \b | 词边界,前面的字符必须在最前或最后 |
| \B | 非边界 |
| {m} | 前面的字符有且只能出现m次 |
| {n,m} | 前面的字符可出现n到m次 |
| {m,} | 前面的字符至少出现m次 |
| () | 改变优先级或将某个字符串视为一个整体 |
5.模式匹配符——增强正则的功能
(1).用法:/正则表达式/模式匹配符
(2).常用的模式匹配符:
| 模式匹配符 | 功能 |
|---|---|
| i | 待匹配的字符串不区分大小写 |
| m | 待匹配的字符串视为多行 |
| s | 将待匹配的字符串视为单行,换行符作为普通字符 |
| x | 将正则表达式中的空白忽略 |
| A | 强制仅从目标字符串的开头开始匹配 |
| D | 正则表达式中的$符仅匹配目标字符串的结尾,防止目标字符串的结尾有回车 |
| U | 匹配最近的字符串,避免了正则的贪婪模式(正则是只要符合的都会匹配) |
6.常用的正则函数
| 函数名 | 功能 |
|---|---|
| preg_filter | 执行一个正则表达式搜索和替换 |
| preg_grep | 返回匹配模式的数组条目 |
| preg_match | 执行一个正则表达式匹配 |
| preg_match_all | 执行一个全局正则表达式匹配 |
| preg_replace | 执行一个正则表达式的搜索和替换 |
| preg_replace_callback | 执行一个正则表达式搜索并使用一个回调进行替换 |
| preg_replace_callback_array | 传入数组,执行一个正则表达式搜索并使用一个回调进行替换 |
| preg_split | 通过一个正则表达式分割字符串 |
总的来说,正则表达式(模式匹配)感觉就是一个熟能生巧的活,要多练,像匹配邮箱、匹配手机号、匹配网址、写一个采集器都可以。