欢迎访问宙启技术站
智能推送

PHP正则表达式函数大全,让你的匹配更加准确

发布时间:2023-06-14 18:56:25

正则表达式是一种强大的文本匹配工具,它可以在字符串中搜索并匹配指定的模式。在PHP中,有许多内置的正则表达式函数,可以帮助我们在代码中快速实现正则表达式的匹配功能。本文将介绍PHP正则表达式函数大全,帮助你更加准确地进行匹配。

一、正则表达式函数

1. preg_match()

preg_match()是PHP中最常用的正则表达式匹配函数之一。它用于在字符串中搜索指定的模式,并返回第一个匹配项。如果找到一个或多个匹配,则返回真,否则返回假。语法如下:

preg_match(pattern, subject [,matches] [,flags])

其中,pattern表示要匹配的正则表达式;subject表示要搜索的字符串;matches是可选的,用于存储匹配到的结果;flags是可选的,表示正则表达式的修饰符。

2. preg_match_all()

preg_match_all()与preg_match()类似,不同之处在于它会返回所有匹配项,而不是只返回第一个。它的语法如下:

preg_match_all(pattern, subject [,matches] [,flags])

注意:preg_match_all()返回的结果是一个二维数组,其中第一维表示匹配到的项目,第二维表示匹配到的子组。

3. preg_replace()

preg_replace()函数用于在字符串中将匹配的模式替换为新的字符串。它的语法如下:

preg_replace(pattern, replacement, subject [,limit] [,count])

其中,pattern表示要匹配的正则表达式;replacement表示要替换的模式;subject表示要搜索的字符串;limit是可选的,指定最大替换次数(默认为-1,表示全部替换);count是可选的,用于存储替换的次数。

4. preg_filter()

preg_filter()与preg_replace()类似,不同之处在于它只返回修改后的字符串,而不是将修改后的字符串保存到原来的字符串中。它的语法如下:

preg_filter(pattern, replacement, subject [,limit] [,count])

其中,参数与preg_replace()函数相同。

5. preg_split()

preg_split()函数用于将字符串按指定的模式分割成数组。它的语法如下:

preg_split(pattern, subject [,limit] [,flags])

其中,pattern表示要匹配的正则表达式;subject表示要搜索的字符串;limit是可选的,指定最大分割次数(默认为-1,表示全部分割);flags是可选的,表示正则表达式的修饰符。

二、正则表达式修饰符

1. i

i是一个正则表达式修饰符,表示忽略大小写。例如,使用/i修饰符,可以将"hello"与"HELLO"视为相同的字符串。

2. m

m是一个正则表达式修饰符,表示多行匹配。例如,使用/m修饰符,可以将^与$匹配的开始和结尾位置扩展到整个字符串的开头和结尾,而不是单个行的开头和结尾。

3. s

s是一个正则表达式修饰符,表示将"."匹配任何字符,包括换行符。例如,使用/s修饰符,可以使正则表达式匹配包括换行符的所有字符。

4. U

U是一个正则表达式修饰符,表示将模糊匹配变为非贪婪匹配。例如,使用/U修饰符,在非贪婪模式下搜索第一个匹配项。

5. x

x是一个正则表达式修饰符,表示忽略模式中的空格和注释。例如,使用/x修饰符,可以将空格和注释的位置视为匹配模式。

三、正则表达式元字符

1. $(匹配字符串结尾)

用于匹配字符串的结尾位置。例如,正则表达式/abc$/可以匹配所有以"abc"结尾的字符串。

2. ^(匹配字符串开头)

用于匹配字符串的开头位置。例如,正则表达式/^abc/可以匹配所有以"abc"开头的字符串。

3. .(匹配任何字符)

用于匹配任意字符(除换行符外)。例如,正则表达式/a.c/可以匹配字符串"abc"、"adc"、"aec"等。

4. *(重复0次或多次)

用于匹配前面的表达式零次或多次。例如,正则表达式/a*bc/可以匹配"bc"、"abc"、"aabc"等。

5. +(重复1次或多次)

用于匹配前面的表达式一次或多次。例如,正则表达式/a+bc/可以匹配"abc"、"aabc"、"aaabc"等。

6. ?(重复0次或1次)

用于匹配前面的表达式零次或一次。例如,正则表达式/a?bc/可以匹配"bc"、"abc"等。

7. {}(重复n次)

用于匹配前面表达式重复n次。例如,正则表达式/a{3}bc/可以匹配"aaabc"、"aaaabc"等。

8. [](字符集)

用于匹配其中的任何字符。例如,正则表达式/[abc]d/可以匹配"ad"、"bd"、"cd"等。

9. [^](否定字符集)

用于匹配未列出的任何字符。例如,正则表达式/[^abc]d/可以匹配"cd"、"dd"等,但不能匹配"ad"、"bd"。

10. ()(组)

用于捕获匹配项。例如,正则表达式/(abc)/会将"abc"作为一个捕获组,可以通过$1等变量引用这个组。

四、正则表达式函数使用示例

下面是一些正则表达式函数的使用示例:

1. preg_match()

$string = "The quick brown fox jumps over the lazy dog.";

if(preg_match('/fox/', $string)){

   echo "Match found!";

}else{

   echo "Match not found.";

}

输出:Match found!

2. preg_match_all()

$string = "The quick brown fox jumps over the lazy dog.";

preg_match_all('/\w+/', $string, $matches);

print_r($matches);

输出:

Array

(

    [0] => Array

        (

            [0] => The

            [1] => quick

            [2] => brown

            [3] => fox

            [4] => jumps

            [5] => over

            [6] => the

            [7] => lazy

            [8] => dog

        )

)

3. preg_replace()

$string = "The quick brown fox jumps over the lazy dog.";

$newString = preg_replace('/fox/', 'cat', $string);

echo $newString;

输出:The quick brown cat jumps over the lazy dog.

4. preg_filter()

$string = "The quick brown fox jumps over the lazy dog.";

$newString = preg_filter('/fox/', 'cat', $string);

echo $newString;

输出:The quick brown cat jumps over the lazy dog.

5. preg_split()

$string = "The quick brown fox jumps over the lazy dog.";

$wordsArray = preg_split('/\s+/', $string);

print_r($wordsArray);

输出:

Array

(

    [0] => The

    [1] => quick

    [2] => brown

    [3] => fox

    [4] => jumps

    [5] => over

    [6] => the

    [7] => lazy

    [8] => dog.

)

总结

本文介绍了PHP中常用的正则表达式函数及其使用方法。正则表达