正则表达式

1.正则表达式是一种字符串匹配搜索工具

2 正则表达式规则

  • php函数

      preg_match 和 preg_match_all的区别
    用法一致; preg_match :只能匹配到一次,返回0或者1 preg_match_all : 全局匹配,返回 0,1,2...取决于匹配的数据 参数:$pattern : 正则表达式 preg_replace()和preg_filter()===>将匹配到的数值进行替换,可以使用数组替换 $pattern=>匹配规则(str or arr) $replacement=>替换内容(str or arr) $subject=>目标对象(str or arr) preg_replace($pattern,$replacement,$subject) ***当$pattern 和$replacement 为str or arr 以上两个函数的返回结果是一样的 ***只有当$subject 为 arr时,结果不同 preg_filter会将没有匹配的$subject的数组内容过滤掉,只剩下匹配了的,而preg_replace 会将所有的结果返回 preg_filter($pattern,$replacement,$subject) preg_grep() 相当于阉割版的preg_filter,只匹配不替换 1.preg_split($pattern,$subject)这个函数和explode()相似 2. $string="这是一个,爱好编程的大牛"; var_dump( explode(',',$string) )-->打印的是一个数组 3.把$pattern类比于这个',',就明白了!! preg_quote($str); 将$str中的正则运算符用 \ 转义 as: $str = '123{af}33[dff]'; $str = preg_quote($str); =>结果为: 123\{af\}33\[dff\]
  • 正则表达式基础语法

界定符 原子 量词 边界控制 模式单元

1.界定符 表示一个正则表达式的开始和结束
/[0-9]/ 或者 #[0-9]# 或者 {[0-9]}

2.正则表达式实时调试工具
regexpal

3.原子:正则表达式中的最小匹配单位,通常它只是Unicode编码表中的某一个字符。原子分为2种,可见和不可见。
可见原子:Unicode编码表中用键盘输出后肉眼可见的字符
标点 ; " _ ? .等等
英文字母数字 a-z,A-Z,0-9
汉字、日文、阿拉伯文等其他语言文字
∑,∈,∮,≌等数理化公式符号
其他可见字符
不可见原子:Unicode编码表中用键盘输出后肉眼不可见的字符
换行符 \n
回车\r
制表符 \t
空格
其他不可见符号

4.原子匹配规则
[] -> 匹配出现在[]中的任意一个原子
| -> 或运算,匹配|符号左右两边的任意一个
[^ ] ->首先这里^必须和[紧挨着,才表示匹配除了[]里面任意原子的字符
[ ^ ]->如果不挨着,就只表示匹配^这种字符了

5.原子集合:
.  匹配除换行字符外的任意字符,即[^\n]
\d 匹配任意一个十进制数字,即[0-9]
\D 匹配任意一个非十进制数字,即[^0-9]
\s 匹配一个不可见原子,即[\f\n\r\t\v]
\S 匹配一个可见原子,即[^\f\n\r\t\v]
\w 匹配任意一个数字、字母或下划线,即[0-9a-zA-Z_]
\W 匹配任意一个非数字、字母或下划线,即[^0-9a-zA-Z_]

6.正则表达式->量词(在目标字符串中查找某个原子"连续"出现多少次):
{n}   表示其前面的原子恰好出现n次
{n,}  表示前面的原子最少出现n次
{n,m} 表示其前面的原子最少出现n次,最多出现m次
*     匹配0次、1次或多次其之前的原子,即{0,}
+     匹配1次或多次其之前的原子,即{1,}
?     匹配0次或1次期之前的原子,即{0,1}
eg:
5{3} -> 原子5连续出现3次的就匹配
[a-zA-Z]{3} -> 

7.常见的修正模式修正符:
U 懒惰匹配 
i 忽略英文字母大小写 //如:"/abc/i"可以与abc或aBC或ABc等匹配
g 全局匹配
m 将字符串视为多行
x 忽略空白(空格和tab制表符)
s 让元字符 . 匹配包括换行符在内的所有字符
//模式为:$mode="/pr.y/";
//要匹配字符串为:$str="pr\ny";
//两者不可匹配; . 是除了换行以外的字符可匹配;
//修改下模式为:$mode="/pr.y/s";
//其中修正符s将\n视为普通字符,即不是换行;
//最后两者可以匹配;
A 强制从目标字符串开头匹配
//$mode="/abc/A";
//可以与$str="abcsdfi"匹配,
//不可以与$str2="sdsdabc"匹配;
//因为$str2不是以abc开头;
D 如果使用$限制结尾字符,则不允许结尾有换行;
//模式为:$mode="/abc$/";
//可以与最后有换行的$str="adshabc\n"匹配;
//元子符$会忽略最后的换行\n;
//如果模式为:$mode="/abc/D",
//则不能与$str="adshabc\n"匹配,
//修正符D限制其不可有换行;必需以abc结尾;
e 配合函数preg_replace()使用,可以把匹配来的字符串当作正则表达式执行;
U:懒惰匹配
u:贪婪匹配
i:忽略英文字母大小写
x:忽略空白(回车,空格等)
s:让元字符"."匹配包括换行在内的所有字符
e:
$pattern = '/imooc.+123/U';//'前的U代表修正模式是懒惰模式,如果没有U默认为贪婪模式

你可能感兴趣的:(正则表达式)