宝哥软件园

PHP正则表达式入门教程(推荐)

编辑:宝哥软件园 来源:互联网 时间:2021-10-30

思维导图

点击下图查看具体内容!

介绍

正则表达式应该在开发中频繁使用。现在,很多开发语言都有正则表达式的应用,比如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)[ws!] 1$/';$str='川陕甲感谢川陕甲';$ matches=array();if(preg_match($regex,$str,$ matches)){ var _ dump($ matches);}回显' n ';避免捕捉数据。

格式:(?模式)

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 ';特殊字符

特殊字符解释* 0到多次1到多次也可以写成{1,}?0或1次。匹配除换行符以外的所有单个字符w [a-zA-Z0-9_] s空白字符(空格、换行符、回车符)[tnr] d [0-9]以上是边肖介绍的PHP正则表达式入门教程的相关知识。非常感谢您对我们网站的支持!

更多资讯
游戏推荐
更多+