新手入门学习正则表达式的常见错误
正则的好处就是易于上手,通过几个小时的学习,大部分的正则就都可以看的懂了,虽然看得懂,但在实践的过程中还是会遇到很多得不到自己想要结果的情况,毕竟正则的语法还是有些奇怪,本文就整理了一些关于正则学习过程中经常会犯的错误。
正则表达式
一、空格
我们在平时写代码的时候,空格通常是用来是使代码更加规范的工具,连同适当的缩进,行首的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('/<span>.*<\/span>/', "<span>aaa</span><span>bbb</span>", $matches); var_dump($matches);
正则的本意是找出字符串中所有的span标签,并把他们放到的一个数组中,然而结果很奇怪:两个span竟然一次都被匹配上了!实际上想一想的话这也是合理的,字符串“aaabbb”确实是以开头并以结尾的,只不过其中的.*匹配了太多的内容“aaabbb”都被匹配上了。这就是“+”和“*”的贪婪模式——默认他们会匹配尽量多的字符,而在后面加一个“?”可以取消这种贪婪模式,让他们只匹配尽量少的内容:
preg_match_all('/<span>.*?<\/span>/', "<span>aaa</span><span>bbb</span>", $matches); var_dump($matches);
这次我们得到了想要的结果。
正则的语法比较特殊,若是不注意的话还是比较容易采坑的。
推荐学习:《正则表达式极速入门》
Atas ialah kandungan terperinci 新手入门学习正则表达式的常见错误. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Ungkapan biasa PHP ialah alat yang berkuasa untuk pemprosesan dan penukaran teks. Ia boleh mengurus maklumat teks dengan berkesan dengan menghuraikan kandungan teks dan menggantikan atau memintasnya mengikut corak tertentu. Antaranya, aplikasi biasa ungkapan biasa adalah untuk menggantikan rentetan bermula dengan aksara tertentu Kami akan menerangkannya seperti berikut

Ungkapan biasa Golang menggunakan aksara paip | untuk memadankan berbilang perkataan atau rentetan, memisahkan setiap pilihan sebagai ungkapan OR logik. Contohnya: padanan "musang" atau "anjing": musang|padanan anjing "cepat", "coklat" atau "malas": (cepat|coklat|malas) sepadan dengan "Pergi", "Python" atau "Java": Pergi| Python |Java memadankan perkataan atau kod zip 4 digit: ([a-zA

Cara mengalih keluar bahasa Cina menggunakan peraturan biasa dalam PHP: 1. Buat fail contoh PHP 2. Tentukan rentetan yang mengandungi bahasa Cina dan Inggeris 3. Gunakan "preg_replace('/([\x80-\xff]*)/i'; '',$a);" Kaedah biasa boleh mengalih keluar aksara Cina daripada hasil pertanyaan.

Dalam artikel ini, kita akan belajar cara mengalih keluar teg HTML dan mengekstrak kandungan teks biasa daripada rentetan HTML menggunakan ungkapan biasa PHP. Untuk menunjukkan cara mengalih keluar teg HTML, mari kita tentukan rentetan yang mengandungi teg HTML dahulu.

Berkongsi petua tentang menggunakan ungkapan biasa PHP untuk melaksanakan fungsi penggantian bahasa Cina Dalam pembangunan web, kami sering menghadapi situasi di mana kandungan bahasa Cina perlu diganti. Sebagai bahasa skrip sebelah pelayan yang popular, PHP menyediakan fungsi ekspresi biasa yang berkuasa, yang boleh merealisasikan penggantian bahasa Cina dengan mudah. Artikel ini akan berkongsi beberapa teknik untuk menggunakan ungkapan biasa untuk melaksanakan penggantian bahasa Cina dalam PHP dan memberikan contoh kod khusus. 1. Gunakan fungsi preg_replace untuk melaksanakan penggantian bahasa Cina Fungsi preg_replace dalam PHP boleh digunakan

PHP ialah bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan Web Ia boleh berinteraksi dengan pelbagai pangkalan data untuk melaksanakan pertanyaan dan operasi data. Apabila menggunakan PHP untuk operasi pertanyaan, kami perlu memberi perhatian khusus kepada beberapa perkara untuk mengelakkan ralat biasa Perkara berikut akan memperkenalkan langkah berjaga-jaga dan ralat biasa pernyataan pertanyaan PHP secara terperinci, dan menyediakan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. 1. Sambung ke pangkalan data Sebelum melakukan pertanyaan PHP, anda perlu menyambung ke pangkalan data terlebih dahulu. Gunakan mysqli terbina dalam PHP (MySQLI

Keselamatan tapak web telah menarik lebih banyak perhatian, dan menggunakan protokol HTTPS untuk memastikan keselamatan penghantaran data telah menjadi bahagian penting dalam pembangunan tapak web semasa. Dalam pembangunan PHP, bagaimana untuk menggunakan ungkapan biasa untuk mengesahkan sama ada URL adalah protokol HTTPS? Mari ketahui di bawah. Ungkapan biasa Ungkapan biasa ialah ungkapan yang digunakan untuk menerangkan peraturan Ia adalah alat yang berkuasa untuk memproses teks dan digunakan secara meluas dalam pemadanan teks, carian dan penggantian. Dalam pembangunan PHP, kita boleh menggunakan ungkapan biasa untuk memadankan http dalam URL

Ralat dan penyelesaian biasa dalam penukaran jenis Golang Dalam proses pembangunan menggunakan Golang, penukaran jenis sudah pasti masalah yang sering dihadapi. Walaupun Golang ialah bahasa yang ditaip secara statik, kita masih perlu melakukan penukaran jenis dalam beberapa kes, seperti menukar daripada jenis antara muka{} kepada jenis struktur tertentu, atau menukar daripada satu jenis data asas kepada jenis data asas yang lain. Walau bagaimanapun, beberapa ralat sering berlaku semasa penukaran jenis Artikel ini akan memperkenalkan beberapa ralat penukaran jenis biasa.