PHP正则表达式推荐
思维导图点击下图查看具体内容!
介绍正则表达式,在开发中应该经常使用。现在,很多开发语言都有正则表达式的应用,比如javascript、java、net、php等。今天,我将和大家谈谈我对正则表达式的理解。请给我一些不足之处的建议。你对以下术语了解多少?分隔符域修饰符限定符破译通配符(正向预览,反向预览)反向引用惰性匹配注释零字符宽度定位我们什么时候用正则表达式?不是所有的字符操作都应该是规则的。在某些方面,php使用正则而不是正则,这影响了效率。当我们遇到复杂文本数据的解析时,使用正则化是一个更好的选择。优点正则表达式在处理复杂字符操作时,可以在一定程度上提高工作效率,节省代码。缺点当我们使用正则表达式时,复杂的正则表达式会增加代码的复杂度,让人难以理解。因此,有时我们需要在正则表达式中添加注释。常规模式分隔符,通常“/”用作分隔符的开始和结束,也可以使用“#”。何时使用“#”?通常,字符串中有许多“/”字符,因为当它是常规字符时,需要对其进行转义,例如uri。使用“/”分隔符的代码如下。复制的代码如下: $ regex='/http : \//([\ w .])\/([\ w])\/([\ w])\。html $/I ';$ str=' http://www . youku.com/show _ page/id _ ABCDEFG . html ';$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';preg_match中的$matches[0]将包含与整个模式匹配的字符串。使用“#”分隔符的代码如下。这时,'/'是逃不掉的!复制代码如下: $ regex=' # http://([\ w .])/([\ w])/([\ w])\。html $ # I ';$ str=' http://www . youku.com/show _ page/id _ ABCDEFG . html ';$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';修饰符:用于改变正则表达式的行为。(/http: \/\/([\ w.]) \/([\ w])中的最后一个“I”\/([\ w])。html/I’)我们看到的是一个修饰符,这意味着case被忽略了。还有一个我们经常使用的修饰语。投稿代码:复制代码如下: $ regex='/HELLO/';$ str=' hello word$ matches=array();if(preg_match($regex,$str,$ matches)){ echo ' No I : valid success!',' \ n ';} if(preg_match($regex。I ',$str,$ matches)){ echo ' YES I : valid success!',' \ n ';}字符字段:[\w]用方括号展开的部分是字符字段。限定符:如[\w]{3,5}或[\w]*或[\w],在[\w]之后的所有符号代表限定符。现在介绍一下具体含义。{3,5}表示3到5个字符。{3,}有3个以上的字符,{,5}最多有5个字符,{3}有3个字符。*表示0到更多表示1到更多。插入符号3360放在字符字段(如: [\ w])中,表示否定(不包括意义);——“反向选择”放在表达式之前,表示它从当前字符开始。(/n/I,意思是从n开始)。请注意,我们通常称“\”为“跳转字符”。用于转义一些特殊符号,如“.”“/”通配符(lookup):断言某些字符串中存在某些字符!回望分为两种类型:lookaheads(前向预览?=)和lookbehinds(反向预览?=)。
格式:转发预览:(?=)对应的(?)表示否定。反向预览:(?=)对应的(?)表示否定意义,后面跟字符。复制代码如下:$regex='/(?=c)d(?=e)/';/* d后跟c,d后跟e */$ str=' abcdefgk ';$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';否定意义:复制代码如下:$regex='/(?c)d(?e)/';/* d后面不跟c,d后面不跟e */$ str=' abcdefgk ';$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';宽度:零验证零字符码复制码如下:$regex='/HE(?=L)LO/I’;$ str=' HELLO$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';无法打印结果!复制代码如下:$regex='/HE(?=L)LLO/我';$ str=' HELLO$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';可以打印出结果!描述:(?=L)表示HE后面跟一个L字符。但是(?=L)本身不占用一个字符,这应该与(L)本身占用一个字符有所区别。将捕获的数据分组,但不指明类型,以便将来使用。指示该类型引用通配符。因此,只有圆括号开头没有问号的才能被捕获。同一表达式中的引用称为反向引用。调用格式: \数字(如\1)。复制代码如下: $ regex='/(川韩佳)[\ w \ s!] \1$/';$str='川陕甲感谢川陕甲';$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';避免捕获数据格式:(?pattern) Advantage :将有效反向引用的数量保持在最小,代码会越来越清晰。命名捕获组格式:(?p组名)呼叫模式(?P=组名)复制代码如下:$regex='/(?pauthorchuanjia)[\s]是[\ s](?p=作者)/I ';$ str=' author :川陕甲Is川陕甲';$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';运行结果
匹配(记住:有两个操作,请看下面的原理部分)格式:限定符?原则:“先匹配?”前面部分,然后匹配正确的表达式。如果正确的表达式匹配成功,则整个匹配结束。首先看下面两个代码:代码1。复制代码如下: $ regex='/(')[\ 1]\ 1/I ';$ str=“a”“b”“c”“d”;$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';结果1。
2代码复制代码如下: $ regex='/(') [\ 1]?\ 1/I ';$ str=“a”“b”“c”“d”;$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';结果2
Analysis :比较两个正则表达式。的第一个加了“?”。第二个没有。结果:主要看第一个参数:第一个参数打印出所有字符,第二个参数只打印“a”。结论:首先满足(')[\ 1] \ 1的条件,包括' a ',' a'' b ',' a'' b'' c ','。d ',但第一个正则表达式选择最大的' a''b''c''d ',这意味着非惰性匹配将取出最大的匹配结果进行比较。第二个正则表达式:首先匹配(')[\ 1]。如果匹配成功,那么我们匹配“?”。\1在右边,如果匹配成功,则整个匹配结束。其他案例: '哦,\ '我的'上帝'=====/(') ([\ 1] | \ \ 1) *?(?\\)\1/i正则表达式:(?#批注内容)用途:主要用于复杂批注投稿代码:是用于连接MYSQL数据库的正则表达式复制代码。代码如下:$regex='/^host==(?\.)([\d.])(?\.) (?#主机地址)\ |([\[电子邮件保护] # $% * () _ \-])(?# username)\ |([\[电子邮件保护] # $% * () _ \-])(?#密码)(?\ |)$/IX ';$ str=' host=192 . 168 . 10 . 221 | root | 123456 ';$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';特殊字符特殊字符解释*0到多次1到多次也可以写成{1,}?0或1次。匹配除换行符以外的所有单个字符\w[a-zA-Z0-9_]\s空白字符(空格、换行符、回车符)[\t\n\r]\d[0-9]。
版权声明:PHP正则表达式推荐是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。