当前位置: 首页 > 后端技术 > PHP

正则表达式-入门(一)

时间:2023-03-30 03:13:01 PHP

最近掉进了正则表达式的圈套,一发不可收拾。这有点疯狂。这很有趣。网上的资料一大堆,有好有坏,官方文档写的直白。啃了半天,总结了一些干货,这个系列会有几篇文章,基于通用正则表达式和PHP语法,也会引用一些我觉得不错的文章。正则有点晦涩?这个词是从英文翻译过来的。英文原文是正则表达式。直译就是“正则表达式”的意思。其实我们每个人都用过正则表达式,也就是我们的搜索功能,你输入你要匹配的关键词,比如AV,这是规则规定,电脑根据这个规则搜索匹配你关键词的信息或者文件,这就是Regex的核心功能和工作模式。第一节课结束了,下课了,同学们!好了,到这里我能明白了,我们继续。为什么要学习正则化?因为通过正则化,我们可以快速方便地实现三个目的:数据校验。例如,您的密码必须包含8位数字或英文字母,验证输入的身份证号码是否符合规定等。如果没有规律性,是不是可以一一去循环检查呢?!数据搜索和操作。例如,您可以使用正则表达式来查找指定的标题或文本,然后您可以对其进行任意操作,例如提取、替换、删除、修改等。应用规则会产生符合规则的字符串.这是正则表达式的反向应用。比如我们经常遇到的验证码、随机密码等等。你认为是随机的,其实是有规律的。我习惯把正则表达式所描述的规则称为“特征”。我觉得这个表述比较准确。OK,既然了解了正则化的目的,那我们就来说说使用正则化的几个基本规则:特征的匹配顺序:从左到右。有两种含义,一种是正则表达式从左到右读取匹配,另一种是目标字符串从左到右读取匹配,如果匹配则返回匹配值,如果不匹配匹配,它会继续Go直到目标字符串的末尾。还是为了顺序,在分支结构中,比较复杂的规则一定要写在前面。因为从左到右的匹配特性,当你写一个正则规则时,如果允许有两个或多个匹配特征,并且这两个特征非常相似,你必须把更复杂的规则写在前面,否则会失败。匹配。例如:美国邮政编码可以是5位,也可以是5位+4位可选,如果你把5位写在前面,将无法返回5位+4位可选的条件!贪:这里的贪有广义和狭义两种意思。先说狭义吧。首先,默认情况下,正则表达式会根据你定义的特征匹配最多的字符。例如,\d+表示任意数字重复1次或n次,目标字符串为335522555,则返回整个字符串,而不是3,可以在量词后加?要取消贪心模式,\d*?只返回3,这是狭义贪心的表现。但有时即使取消了贪心模式,系统还是会根据你指定的特征进行最大匹配。这是广义上的贪心,这个不能取消,这个例子后面再说。默认情况下,正则表达式区分大小写。如果要取消,可以通过/i或(?i)取消,这与功能修饰符有关。正则表达式默认识别空格,如果输入空格会导致匹配失败,可以使用/x来避免这个问题。表达式的开头和结尾必须有分隔符。分隔符可以自定义,如果分隔符出现在表达式中,将被认为具有特殊含义。如果要进行字符匹配,必须在前面加反斜杠\进行转义。我推荐的分隔符是@和~。匹配字符串时,系统默认目标字符串为单行。如果要匹配多行字符串,需要使用特征修饰符/m,否则匹配不完整。好了,第二节课结束了!先对这些规则有个印象,在实践中慢慢体会。