正则表达式php正则表达式学习笔记什么是正则表达式(Perl兼容)?正则表达式(Perl兼容)是一种匹配模式。正则表达式本身就是一个字符串。在相应的函数中应该使用正则表达式。PHP中有两套正则表达式函数库,功能相似,但执行效率略有不同。注意PCRE源自Perl语言符号PCRE语法支持比POSIX更多的特性和强大的正则语法:最小匹配单元\a\(放在定界符中)元字符:不能单独使用,修饰原子,用于扩展原子功能和限制/\d/(放在定界符中)模式修正符号:Correction,forpattern(正则修正)/a/i(要放在定界符外)正则表达式中的原子原子是正则表达式的最小单位,一个表达式至少由一个原子组成原子是所有打印的组成和未明确指定为元字符的非打印字符,分为五类。(所有字符都是原子)普通字符作为原子:一些特殊字符如a-zA-Z0-9和移位后的元字符都可以作为原子:所有标点符号,但句子中有特殊含义的符号需要转义后才可以用作原子原子,如\"\'\*\+\?\。一些非打印字符用作原子:如\f\n\r\t\cx使用“通用字符类型”作为原子:如:\d\D\w\W\s\S自定义原子表([])作为一个原子:如:'/[apj]sp/''/[^apj]sp/'普通字符用作原子来打印字符a-zA-Z0-9!@#$%^&*()...非打印字符\n...$str="thisisa^test";$reg="/\^/";if(preg_match($reg,$str,$arr)){echo"正则表达式{$reg}和{$str}匹配成功!\n";print_r($arr);}else{echo"matchfailed";}regularexpression/\^/匹配这个是一个^测试成功!array([0]=>^)'\':转义符号:转义后的一些特殊字符和元字符可以使用作为原子ms将有意义的符号转换为无意义的符号有意义的原子,比如/\^/可以把无意义的字符转换成有意义的原子,比如/\t/(tab键)a-zA-Z0-9这些都是无意义的字符,加上escape也是无意义的都可以加也可以不加.除a-zA-Z0-9外,这些符号不需要传输。使用其他符号时最好转义。大多数特殊符号都有特殊的含义。使用“通用字符类型”\d表示任意数字\D表示任意非数字#/\d/$str="thisisa123test11";//匹配所有数字$reg="/\d/";------------------------------------------正则表达式/\d/这是一个123测试11匹配成功!Array([0]=>Array([0]=>1[1]=>2...))#/\D/$str="这是一个123测试11";//匹配所有数字$reg="/\D/";----------------------------------------------正则表达式/\D/和这个123test11匹配成功!Array([0]=>Array([0]=>t[3]=>s[4]=>[5]=>i...))\w代表任意单词a-zA-Z0-9_\W代表除a-zA-Z0-9之外的任意非单词_所有字符#/\w/$str="!@$@%%^%$@____";//匹配所有单词$reg="/\w/";-----------------------------------正则表达式/\w/和!@$@%%^%$@____匹配成功!Array([0]=>Array([0]=>_[1]=>_...))#\/W\正则表达式/\W/和!@$@%%^%$@____匹配成功!Array([0]=>Array([0]=>![1]=>@[2]=>$[3]=>@...))\s代表空白\S代表任何非空白#/\s/$str="qwwert";----------Array([0]=>Array([0]=>[1]=>[2]=>[3]=>))#/\S/regex/\S/和qwwert匹配成功地!Array([0]=>Array([0]=>q[1]=>w[2]=>w[3]=>e[4]=>r[5]=>t)自定义原子表使用[]指定#[469]正则表达式/[469]/和1243456768909匹配成功!Array([0]=>Array([0]=>4[1]=>4[2]=>6[3]=>6[4]=>9[5]=>9))可以指定范围,用'-'表示正则表达式/[1-5]/和1243456768909匹配成功!Array([0]=>数组([0]=>1[1]=>2[2]=>4[3]=>3[4]=>4[5]=>5))non-^匹配所有非数字正则表达式/[^1-4]/并且ass2423匹配成功!数组([0]=>数组([0]=>a[1]=>s[2]=>s))。点表示正则表达式中所有常见的非打印字符原子字符含义说明\cx匹配由x指定的控制字符,如cM匹配一个Control-M或回车符,x必须是a-z或A-Z中的一个\f匹配一个换页符,相当于x0x或cL\n匹配一个换行符,相当于x0a或cJ\r匹配一个回车符,相当于x0d或cM\t匹配一个制表符,相当于x09或cI\v匹配垂直制表符,相当于x0b或cK......正则表达式中的元字符不能在正则表达式中单独使用。它们用于修饰原子。'*'用于修饰前面的原子。可以有0个、1个或者多个#/go*gle/regularexpression/go*gle/这个gggggoogle是测试匹配成功!Array([0]=>Array([0]=>google))'+'匹配1次或多次前一个原子(前一个原子至少出现一次)正则表达式/g+oogle/和这个gggggoogle是一个测试匹配成功!数组([0]=>数组([0]=>gggggoogle))'?'匹配前一个原子一次或多次(前一个原子不能出现多次)#正则表达式/go?gle/和这个gogle是测试匹配成功!Array([0]=>Array([0]=>gogle){n}表示前面的原子正好出现n次#正则表达式/go{2}gle/而这个google是测试匹配成功!Array([0]=>Array([0]=>google)){n,}表示前面的原子不小于n#正则表达式/go{2,}gle/而这个google是一个test匹配成功!Array([0]=>Array([0]=>google)){n,m}表示前面的原子最少出现n次最多m#regularexpression/go{1,3}gle/而这个google是测试匹配成功!Array([0]=>Array([0]=>google))()改变优先级将小原子变成大原子子模式,整个表达式是一个大模式,每个独立的子模式都背-在括号中引用。正则表达式/orac(le|my)/和这个oracmysql是一个测试。比赛成功!Array([0]=>Array([0]=>oracmy)[1]=>Array([0]=>my))正则表达式/orac(mysql)*/和这个oracmysql是mysql匹配成功!Array([0]=>Array([0]=>oracmysql)[1]=>Array([0]=>mysql))正则表达式/(http|ftp):\/\/\www(.*)?\.(com|net)/和这个http://www.baidu.comoracmysqlftp://www.exp.net是一个mysql匹配成功!Array([0]=>Array([0]=>http://www.baidu.comoracmysqlftp://www.exp.net)[1]=>数组([0]=>http)[2]=>数组([0]=>.baidu.comoracmysqlftp://www.exp)[3]=>Array([0]=>net))正则表达式/\d{4}(-|\/)\d{2}\1\d{2}/和这个2020-03-062020/03/06匹配成功!Array([0]=>Array([0]=>2020-03-06[1]=>2020/03/06)[1]=>Array([0]=>-[1]=>/))元字符表元字符含义描述*匹配0次,1次或更多前一个原子+匹配1次或更多下一个原子?匹配0或1个原子!匹配两个或多个分支Select{n}表示前面的原子恰好出现n次{n,}表示前面的原子出现不少于n次{n,m}次表示前面的原子至少出现n次且至多m次^或,A匹配输入字符串的开头(或在多模行的开头,紧接一个换行符之后)\$或\Z匹配输入字符串的结尾(或在多模式行的开头,紧跟一个换行符)\b匹配一个词边界\B匹配一个非词边界的部分()匹配整体作为一个原子,即模式单元,可以是理解为由多个单原子组成的大原子。模式校正符号(单个字符)。模式校正符号应写在定界符号之外(右侧)。例:“/go*gle/i”模式修正符一个字符是一个函数功能:模式修正符可以修改正则表达式的解释,扩展正则表达式的功能i:修改正则表达式为不区分大小写(默认区分大小写)正则表达式/test/i匹配本次测试成功!Array([0]=>Array([0]=>Test))m将多行视为多行(默认规则将多行视为一行)正则表达式/^is/mandthisisaTest匹配成功!Array([0]=>Array([0]=>is))s在修改后的正则表达式中。可以匹配换行符(默认。不能匹配换行符)正则表达式/Te.*st/s这是一个测试匹配成功!Array([0]=>Array([0]=>Test))s更正的正则表达式,空白正则表达式/webserver/ix并且这个可以省略是一个WebServer匹配成功!Array([0]=>Array([0]=>WebServer))U(.*,+)正则表达式比较贪心U可以取消贪心模式(不常用一般用(.*?))写法正则表达式正则表达式是一种语言,学着虚心写匹配url的正则表达式
