学习PHP正则表达式训练
1.正则表达式基本语法
正则表达式是用于匹配字符串的方法。在PHP中,正则表达式通常用于搜索文本中的特定模式,并且可以执行替换和分割匹配字符串等操作。接下来我们来学习一下正则表达式的基本语法:
$pattern = '/正则表达式模式/';
preg_match($pattern, $string, $matches); // preg_match()函数:返回第一个匹配到的字符串
preg_match_all($pattern, $string, $matches); // preg_match_all()函数:返回所有匹配到的字符串
preg_replace($pattern, $replacement, $string); // preg_replace()函数:替换匹配到的字符串
在上面的代码中,$pattern变量存储正则表达式模式。 '/' 是模式的分隔符,它将用作正则表达式的一部分。 $string是要匹配的字符串,$matches用于存储匹配结果。 preg_match()函数返回第一个匹配的字符串,preg_match_all()函数返回所有匹配的字符串,preg_replace()函数用$replacement替换匹配的字符串。
2。匹配字符
字符是正则表达式中最简单的模式。与该字符匹配的字符的正则表达式。
$pattern = '/a/';
preg_match($pattern, 'abc', $matches); // 匹配成功,$matches[0] = 'a'
preg_match_all($pattern, 'abcd', $matches); // 匹配成功,$matches[0] = 'a'
preg_match($pattern, 'bcd', $matches); // 匹配失败
在上面的代码中,我们使用'/a/'来匹配字符串'abc'和'abcd',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。
3。匹配字符集
字符集用于匹配一组字符中的一个字符。例如,[abc] 匹配单个字符 a、b 或 c。
$pattern = '/[abc]/';
preg_match($pattern, 'bcd', $matches); // 匹配成功,$matches[0] = 'b'
preg_match_all($pattern, 'abcdefg', $matches); // 匹配成功,$matches[0] = 'a', $matches[1] = 'b', $matches[2] = 'c'
preg_match($pattern, 'def', $matches); // 匹配失败
在上面的代码中,我们使用'/[abc]/'来匹配字符串'bcd'和'abcdefg',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。
4。对应范围
通过将字符放在一个范围内,我们可以匹配该范围内的任何字符。例如,[a-z] 匹配任何小写字母。
$pattern = '/[a-z]/';
preg_match($pattern, 'abc', $matches); // 匹配成功,$matches[0] = 'a'
preg_match_all($pattern, 'abc123ABC', $matches); // 匹配成功,$matches[0] = 'a', $matches[1] = 'b', $matches[2] = 'c'
preg_match($pattern, 'DEF', $matches); // 匹配失败
在上面的代码中,我们使用'/[a-z]/'来匹配字符串'abc'和'abc123ABC',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。
5。匹配任意字符
通常我们需要匹配任意字符,可以用点(.)来表示。点匹配单个字符,但不匹配换行符。
$pattern = '/.at/';
preg_match($pattern, 'cat', $matches); // 匹配成功,$matches[0] = 'cat'
preg_match_all($pattern, 'bat hat sat', $matches); // 匹配成功,$matches[0] = 'bat', $matches[1] = 'hat', $matches[2] = 'sat'
preg_match($pattern, 'lat' . PHP_EOL . 'mat', $matches); // 匹配失败
在上面的代码中,我们使用'/.[a-z]at/'来匹配字符串'cat'和'bat hat sat',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。
6。匹配多个字符
我们可以使用大括号 ({}) 来匹配模式中的多个字符。例如,{3,5}可以匹配3到5个字符。
$pattern = '/[a-z]{3,5}/';
preg_match($pattern, 'hello', $matches); // 匹配成功,$matches[0] = 'hello'
preg_match_all($pattern, 'hello world', $matches); // 匹配成功,$matches[0] = 'hello', $matches[1] = 'world'
preg_match($pattern, 'a', $matches); // 匹配失败
上面的代码中,我们使用'/[a-z]{3,5}/'来匹配字符串'hello'和'hello world',匹配结果存储在$matches数组中。如果匹配失败则返回 false。
7。匹配任意字符
我们可以使用星号(*)来匹配任何数字。例如,a*可以匹配数字a、aa、aaa等。
$pattern = '/a*/';
preg_match($pattern, 'abc', $matches); // 匹配成功,$matches[0] = 'a'
preg_match_all($pattern, 'aaabc', $matches); // 匹配成功,$matches[0] = 'aaa', $matches[1] = 'b', $matches[2] = 'c'
preg_match($pattern, 'bcd', $matches); // 匹配成功,$matches[0] = ''
在上面的代码中,我们使用'/a*/'来匹配字符串'abc'和'aaabc',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。
8。匹配至少一个字符
我们可以使用加号 (+) 来显示至少匹配 1 的数字。例如,a+可以匹配一个或多个a,例如a、aa、aaa等。
$pattern = '/a+/';
preg_match($pattern, 'abc', $matches); // 匹配成功,$matches[0] = 'a'
preg_match_all($pattern, 'aaabc', $matches); // 匹配成功,$matches[0] = 'aaa', $matches[1] = 'b', $matches[2] = 'c'
preg_match($pattern, 'bcd', $matches); // 匹配失败
在上面的代码中,我们使用'/a+/'来匹配字符串'abc'和'aaabc',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。
9。匹配可选字符
使用括号 (()) 标记可选部分。例如,(a|b) 匹配字符一或b。
$pattern = '/(a|b)/';
preg_match($pattern, 'abc', $matches); // 匹配成功,$matches[0] = 'a'
preg_match_all($pattern, 'abcde', $matches); // 匹配成功,$matches[0] = 'a', $matches[1] = 'b'
preg_match($pattern, 'cde', $matches); // 匹配失败
在上面的代码中,我们使用'/(a|b)/'来匹配字符串'abc'和'abcde',匹配结果成功并存储在$matches数组中。如果匹配失败则返回 false。
10。结论
正则表达式是功能强大的文本匹配工具,可用于搜索、替换、提取等操作。 PHP 通过 preg_match、preg_match_all 和 preg_replace 等函数提供正则表达式支持。因此,掌握正则表达式对于PHP开发人员来说非常重要。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网