PHP正则表达式函数大全,让你的匹配更加准确
正则表达式是一种强大的文本匹配工具,它可以在字符串中搜索并匹配指定的模式。在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中常用的正则表达式函数及其使用方法。正则表达
