宝哥软件园

PHP正则表达式基础介绍

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

思维导图

介绍

正则表达式应该在开发中频繁使用。现在很多开发语言都有正则表达式的应用,比如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 ';避免捕获数据格式:(?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正则表达式相关的文章。

更多资讯
游戏推荐
更多+