Tutorial pengenalan ungkapan biasa PHP

WBOY
Lepaskan: 2023-06-23 15:02:01
asal
1525 orang telah melayarinya

Apabila membangunkan tapak web atau aplikasi, kita selalunya perlu memproses teks. Jika ia hanyalah operasi rentetan ringkas, seperti carian dan penggantian, pemintasan, dsb., anda juga mungkin boleh menggunakan beberapa fungsi terbina dalam untuk melengkapkannya. Tetapi jika anda perlu melakukan padanan corak atau pengekstrakan data yang lebih kompleks, maka anda perlu menggunakan ungkapan biasa.

Ekspresi biasa ialah alat yang berkuasa untuk memproses data teks. Ia membantu kami memadankan dan memproses rentetan melalui beberapa simbol dan peraturan tertentu. Dalam PHP, ungkapan biasa terbina dalam, dan pemadanan boleh dilakukan menggunakan perpustakaan PCRE (Perl Compatible Regular Expressions).

Dalam artikel ini, kami akan memperkenalkan sintaks asas dan penggunaan ungkapan biasa PHP untuk membantu pemula bermula dengan cepat dan menguasai alat berkuasa ini.

  1. Sintaksis Asas

Ekspresi biasa terdiri daripada beberapa aksara dan peraturan khusus yang menerangkan corak yang akan dipadankan. Dalam PHP, ungkapan biasa perlu dibalut dengan garis miring (/). Contohnya:

$pattern = "/hello world/i";
Salin selepas log masuk

Ungkapan biasa ini digunakan untuk memadankan "hello world" dalam rentetan dan mengabaikan kes.

Antaranya, "/" mewakili permulaan dan penghujung ungkapan biasa, dan tengah ialah corak yang perlu dipadankan. Dalam contoh ini, kami menggunakan pengubah suai "i" untuk mengabaikan kes. Pengubah suai berada di luar garis miring dan digunakan untuk mengubah suai gelagat padanan ungkapan biasa. Pengubah suai biasa ialah:

修饰符描述
i忽略大小写
m将字符串视为多行
s将点号(.)匹配所有字符,包括换行符
x忽略正则表达式中的空格和注释
  1. Set aksara

Dalam ungkapan biasa, kita boleh menggunakan set aksara untuk memadankan set aksara tertentu. Set aksara perlu dibalut dalam kurungan segi empat sama ([]). Contohnya:

$pattern = "/[aeiou]/i";
Salin selepas log masuk

Ungkapan biasa ini digunakan untuk memadankan mana-mana vokal dalam rentetan, mengabaikan huruf besar.

Dalam kurungan segi empat sama kami menyenaraikan aksara untuk dipadankan, dipisahkan dengan koma (,). Tanda sempang (-) boleh digunakan untuk menunjukkan julat. Contohnya:

$pattern = "/[a-z]/i";
Salin selepas log masuk

Ungkapan biasa ini digunakan untuk memadankan mana-mana huruf kecil, mengabaikan huruf besar.

Sesetengah aksara meta khas juga boleh digunakan dalam kurungan segi empat sama untuk mewakili set aksara tertentu. Contohnya:

元字符描述
d匹配任意一个数字
D匹配任意一个非数字
w匹配任意一个字母、数字或下划线
W匹配任意一个非字母、数字或下划线
s匹配任意一个空白字符(空格、制表符、换行符等)
S匹配任意一个非空白字符
  1. Quantifier

Dalam ungkapan biasa, kita boleh menggunakan pengkuantiti untuk menunjukkan bilangan padanan bagi sesuatu elemen. Pengkuantiti biasa ialah:

量词描述
  • | Padanan 0 atau lebih
  • | Padanan 1 atau lebih
    | n
    {n,} |. Padan sekurang-kurangnya n
    {n,m} |. untuk memadankan satu atau lebih huruf "A" dalam rentetan, mengabaikan kes.
    $pattern = "/a+/i";
    Salin selepas log masuk
  • Ungkapan biasa ini digunakan untuk memadankan rentetan dengan sekurang-kurangnya 3 digit.

Padanan sempadan

Dalam ungkapan biasa, pemadanan sempadan digunakan untuk mengehadkan skop perlawanan. Padanan sempadan biasa ialah:

    例如:

    $pattern = "/^hello/i";
    Salin selepas log masuk

    这个正则表达式用于匹配以“hello”开头的字符串,忽略大小写。

    $pattern = "/world$/i";
    Salin selepas log masuk

    这个正则表达式用于匹配以“world”结尾的字符串,忽略大小写。

    $pattern = "/hello/i";
    Salin selepas log masuk

    这个正则表达式用于匹配单词“hello”,忽略大小写。

    1. 捕获分组

    在正则表达式中,我们可以使用捕获分组来提取匹配的内容。捕获分组需要使用圆括号(())将要捕获的内容包裹起来。例如:

    $pattern = "/(d{3})-(d{4})/";
    $string = "my phone number is 123-4567";
    if(preg_match($pattern, $string, $matches)){
        echo $matches[0]; // 123-4567
        echo $matches[1]; // 123
        echo $matches[2]; // 4567
    }
    Salin selepas log masuk

    这个正则表达式用于匹配“123-4567”这种形式的电话号码,并且将前三个数字和后四个数字分别保存到$matches数组中。

    1. 贪婪匹配和非贪婪匹配

    在正则表达式中,默认情况下会进行贪婪匹配。也就是说,它会尽可能多地匹配字符。例如:

    $pattern = "/.*hello/";
    $string = "my name is hello, nice to meet you";
    if(preg_match($pattern, $string, $matches)){
        echo $matches[0]; // my name is hello
    }
    Salin selepas log masuk

    这个正则表达式用于匹配字符串中的“hello”之前的所有字符。

    如果我们想进行非贪婪匹配,也就是尽可能少地匹配字符,可以在量词后面添加一个问号(?)来实现。例如:

    $pattern = "/.*?hello/";
    $string = "my name is hello, nice to meet you";
    if(preg_match($pattern, $string, $matches)){
        echo $matches[0]; // my name is 
    }
    Salin selepas log masuk

    这个正则表达式也用于匹配字符串中的“hello”之前的所有字符,但是它只匹配到了“my name is”。

    1. 其他函数

    除了preg_match()函数之外,PHP中还提供了其他一些正则表达式相关的函数,例如:

    函数描述
    preg_match_all()用于匹配所有符合正则表达式的结果
    preg_replace()用于替换符合正则表达式的字符串
    preg_split()用于按照正则表达式将字符串分割成数组

    例如:

    $pattern = "/d+/";
    $string = "I have 123 apples and 456 bananas";
    $result = preg_match_all($pattern, $string, $matches);
    print_r($matches);
    
    $result = preg_replace($pattern, "***", $string);
    echo $result;
    
    $result = preg_split($pattern, $string);
    print_r($result);
    Salin selepas log masuk

    这段代码分别演示了匹配所有数字、替换所有数字、以数字为分隔符将字符串分割成数组的操作。

    总结

    本文介绍了PHP正则表达式的基本语法和用法,包括字符集、量词、边界匹配、捕获分组、贪婪匹配和非贪婪匹配等内容。正则表达式是一种非常强大的工具,掌握它可以让我们在处理文本时事半功倍。希望本文能够帮助读者快速入门并掌握PHP正则表达式的基本用法。

    Atas ialah kandungan terperinci Tutorial pengenalan ungkapan biasa PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!