首页 常见问题 新手入门学习正则表达式的常见错误

新手入门学习正则表达式的常见错误

Nov 09, 2019 pm 05:42 PM
常见错误 正则

正则的好处就是易于上手,通过几个小时的学习,大部分的正则就都可以看的懂了,虽然看得懂,但在实践的过程中还是会遇到很多得不到自己想要结果的情况,毕竟正则的语法还是有些奇怪,本文就整理了一些关于正则学习过程中经常会犯的错误。

新手入门学习正则表达式的常见错误

正则表达式

一、空格

我们在平时写代码的时候,空格通常是用来是使代码更加规范的工具,连同适当的缩进,行首的tab一起,使代码看起来更为清晰。但是在正则中可要小心了——空格本身也属于一个要匹配的字符,不恰当的使用空格的话:

echo preg_match('/a{1, 3}/', "aaa") ? '匹配' : '不匹配';  // 不匹配
登录后复制

如上面这个正则,本意是匹配1~3个a,但实际上并不会匹配到后面的3个a,因为{1, 3}中间多了一个空格,使得元字符“{}”的本意失效而变成了普通字符:

echo preg_match('/a{1, 3}/', "a{1, 3}") ? '匹配' : '不匹配';  // 匹配
登录后复制

“a{1, 3}”这个字符串反而匹配上了,这显然不是我们想要的,所以一定要注意,除非匹配的是空格字符本身,否则空格不要用:

echo preg_match('/a{1,3}/', "aaa") ? '匹配' : '不匹配';  // 匹配
登录后复制

※ 例外的,模式修饰符x可以将正则字符串的空白字符忽略掉——然而只能忽略掉数据字符,像上例中的元字符中的空格还是会出现错误,通常来说这会让正则变的更加难以理解,并不太推荐使用:

echo preg_match('/a a a/x', "aaa") ? '匹配' : '不匹配';  // 匹配
登录后复制

二、大小写

这个很好理解,基本就是一个粗心大意的错误,毕竟我们平时用的搜索工具里搜索字母通常大小写都会被匹配,有时候就会忘记正则中并不会自动的匹配大小写:

echo preg_match('/flag/', "Flag") ? '匹配' : '不匹配';  // 不匹配
登录后复制

像这样匹配的字符串中可能有首字母大写的情况,自然就匹配不到了,这时候我们就要把大小写的情况都要考虑进来。不过有时候我们想要匹配某个单词,只要是这4个字母连在一起都要匹配,写起来就比较麻烦:

echo preg_match('/[Ff][Ll][Aa][Gg]/', "Flag") ? '匹配' : '不匹配';  // 匹配
登录后复制

虽然很难想象会有“fLaG”这种奇葩的写法,但是不这样写毕竟无法匹配所有情况,但是有时候我们并不关心大小写,要匹配的字符串却很长,都这样写怕是要累死了,不过还好我们有“i”修饰符:

echo preg_match('/flag/i', "Flag") ? '匹配' : '不匹配';  // 匹配
登录后复制

修饰符“i”设置后,模式中的大小写匹配将会不敏感。

三、贪婪模式

量词“+”和“*”默认都是贪婪模式的,初学者在未遇到它所带来的问题之前可能并不明白这是什么意思,下面kano来举一个例子:

preg_match_all(&#39;/<span>.*<\/span>/&#39;, "<span>aaa</span><span>bbb</span>", $matches);
var_dump($matches);
登录后复制

1.jpg

正则的本意是找出字符串中所有的span标签,并把他们放到的一个数组中,然而结果很奇怪:两个span竟然一次都被匹配上了!实际上想一想的话这也是合理的,字符串“aaabbb”确实是以开头并以结尾的,只不过其中的.*匹配了太多的内容“aaabbb”都被匹配上了。这就是“+”和“*”的贪婪模式——默认他们会匹配尽量多的字符,而在后面加一个“?”可以取消这种贪婪模式,让他们只匹配尽量少的内容:

preg_match_all(&#39;/<span>.*?<\/span>/&#39;, "<span>aaa</span><span>bbb</span>", $matches);
var_dump($matches);
登录后复制

sp20191109_173504_100.png

这次我们得到了想要的结果。

正则的语法比较特殊,若是不注意的话还是比较容易采坑的。

推荐学习:《正则表达式极速入门

以上是新手入门学习正则表达式的常见错误的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何用php正则替换以什么开头的字符串 如何用php正则替换以什么开头的字符串 Mar 24, 2023 pm 02:57 PM

PHP正则表达式是一种针对文本处理和转换的有力工具。它可以通过解析文本内容,并按照特定的模式进行替换或截取,达到有效管理文本信息的目的。其中,正则表达式的一个常见应用是替换以特定字符开头的字符串,对此,我们进行如下的讲解

如何用 Golang 正则匹配多个单词或字符串? 如何用 Golang 正则匹配多个单词或字符串? May 31, 2024 am 10:32 AM

Golang正则表达式使用管道符|来匹配多个单词或字符串,将各个选项作为逻辑OR表达式分隔开来。例如:匹配"fox"或"dog":fox|dog匹配"quick"、"brown"或"lazy":(quick|brown|lazy)匹配"Go"、"Python"或"Java":Go|Python|Java匹配单词或4位邮政编码:([a-zA

php 如何用正则去除中文 php 如何用正则去除中文 Mar 03, 2023 am 10:12 AM

php用正则去除中文的方法:1、创建一个php示例文件;2、定义一个含有中文和英文的字符串;3、通过“preg_replace('/([\x80-\xff]*)/i','',$a);”正则方法去除查询结果中的中文字符即可。

php怎么利用正则匹配去掉html标签 php怎么利用正则匹配去掉html标签 Mar 21, 2023 pm 05:17 PM

在本文中,我们将学习如何使用PHP正则表达式删除HTML标签,并从HTML字符串中提取纯文本内容。 为了演示如何去掉HTML标记,让我们首先定义一个包含HTML标签的字符串。

PHP查询语句注意事项及常见错误 PHP查询语句注意事项及常见错误 Mar 22, 2024 am 11:42 AM

PHP是一种被广泛应用在Web开发中的编程语言,它可以与各种数据库进行交互来实现数据的查询和操作。在使用PHP进行查询操作时,我们需要特别注意一些事项,避免常见的错误,下面将详细介绍PHP查询语句的注意事项及常见错误,并提供具体的代码示例来帮助读者更好地理解。一、连接数据库在进行PHP查询之前,首先需要连接数据库。使用PHP内置的mysqli(MySQLI

如何使用PHP正则表达式验证URL是否为HTTPS协议 如何使用PHP正则表达式验证URL是否为HTTPS协议 Jun 24, 2023 am 08:16 AM

网站安全性越来越受到关注,使用HTTPS协议保证数据传输的安全性已成为当前网站开发的一个重要内容。在PHP开发中,如何使用正则表达式验证URL是否为HTTPS协议呢?下面我们就来了解一下。正则表达式正则表达式是一种用来描述规律的表达式,是处理文本的强大工具,被广泛应用于文本匹配、搜索和替换等方面。在PHP开发中,我们可以通过正则表达式来匹配URL中的http

使用PHP正则实现中文替换功能的技巧分享 使用PHP正则实现中文替换功能的技巧分享 Mar 24, 2024 pm 05:57 PM

使用PHP正则实现中文替换功能的技巧分享在web开发中,经常会遇到需要对中文内容进行替换的情况。PHP作为一种流行的服务器端脚本语言,提供了强大的正则表达式功能,可以很方便地实现中文替换。本文将分享一些在PHP中使用正则实现中文替换的技巧,同时提供具体的代码示例。1.使用preg_replace函数实现中文替换PHP中的preg_replace函数可以用来

PHP正则替换实例:快速掌握替换技巧 PHP正则替换实例:快速掌握替换技巧 Feb 29, 2024 pm 06:33 PM

PHP正则替换实例:快速掌握替换技巧随着互联网的发展,网站开发变得越来越常见。在网站开发中,经常需要对字符串进行替换操作,而正则表达式是一种非常强大的工具,能够在字符串中快速进行搜索和替换操作。本文将介绍如何利用PHP语言中的正则表达式进行替换操作,并提供具体的代码示例,帮助读者快速掌握替换技巧。1.preg_replace函数在PHP中,可以使用preg