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到1以上。
非字符符号
^:
放在字符字段(如: [\ w])表示否定(不含意义)——“反向选择”。
在表达式之前,表达式从当前字符开始。(/n/I,意思是从n开始)。
注意,我们经常称“\”为“跳跃字符”。用于转义一些特殊符号,如“.”,"/".
通配符(回看):断言某些字符串中存在某些字符!
回望分为两种类型: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='/^(Chuanshanjia)[\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 ';运行结果
惯性(记住:有两种操作,请看下面的原理部分)。
格式:限定符?
原则:”?如果前面有限定符,将使用最小的数据。如果“*”取0,“”取1,如果{3,5}通过,则取3。
先看下面两个代码:
代码1。
?PHP $ regex='/HeL */I ';$ str=' heLLLLLLLLLLLLLLLLif(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';结果1。
代码2
?php$regex='/heL*?/I ';$ str=' heLLLLLLLLLLLLLLLLif(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';结果2
代码3,使用" "。
?php$regex='/heL?/I ';$ str=' heLLLLLLLLLLLLLLLLif(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';结果3
代码4,使用{3,5}。
?php$regex='/heL{3,10}?/I ';$ str=' heLLLLLLLLLLLLLLLLif(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' \ n ';结果4
正则表达式的注释。
格式:(?#批注内容)用法:主要用于复杂批注。
贡献代码:是一个用于连接到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 ';特殊字符
如果你想学好php正则表达式,只学习这篇文章就足够了。希望大家能继续学习和阅读php正则表达式相关的文章。
版权声明:PHP正则表达式基础介绍是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。